java - 我不明白为什么我的 java 继承不起作用

标签 java oop inheritance

对于家庭作业,我正在与以下三个类(class)一起工作。

 Class           | Extends         | Variables
 --------------------------------------------------------
 Person          | None            | firstName, lastName, streetAddress, zipCode, phone
 CollegeEmployee | Person          | ssn, salary,deptName
 Faculty         | CollegeEmployee | tenure(boolean)

我无法让 Faculty 构造函数正确使用父类(super class)中的数据。

 import java.util.*;
 import javax.swing.*;
 public class Faculty extends CollegeEmployee
 {
      protected String booleanFlag;
      protected boolean tenured;  
      public Faculty(String firstName, String lastName, String streetAddress, 
                     String zipCode, String phoneNumber, String ssn,
                     String department, double salary)
      {
           super(firstName,lastName,streetAddress,zipCode,phoneNumber,  
                 department,ssn,salary);
           String booleanFlag = JOptionPane.showInputDialog(null, "Tenured (Y/N)?");
           if(booleanFlag.equals("Y"))
              tenured = true;
           else
              tenured = false;
      }
      public void setTenure(boolean tenured)
      {  this.tenured = tenured;   }
      public boolean getTenured()
      {  return tenured;  }
      public void display()
      {
          super.display();
          JOptionPane.showMessageDialog(null, "Tenured: " + tenured);
      }
 }

下面显示了 CollegeEmployee 类,Faculty 是从该类派生的。

 import java.util.*;
 import javax.swing.*;
 public class CollegeEmployee extends Person
 {
     protected String ssn;
     protected String sal;
     protected double annSalary;
     protected String department;
     public CollegeEmployee(String firstName, String lastName, 
                            String streetAddress, String zipCode, 
                            String phoneNumber)
     {
         super(firstName,lastName,streetAddress,zipCode,phoneNumber);
           ssn = JOptionPane.showInputDialog(null, "Enter SSN ");
          department = JOptionPane.showInputDialog(null, "Enter department: ");
          sal = JOptionPane.showInputDialog(null, "Enter salary: ");
          annSalary = Double.parseDouble(sal);
     }  
     public void setFirstName(String firstName)
 {  this.firstName = firstName;  }
 public String getFirstName()
 {  return firstName;  }
     ... ETC ...  REMAINING GET/SET METHODS ELIMINATED FOR BREVITY.

我得到的错误指向参数之间的不匹配...Faculty 调用八个参数,但 CollegeEmployee 只有五个。但是,我认为通过扩展 CollegeEmployee 来扩展 Person,我可以在调用此类时访问所有八个字段。正如已经指出的那样,事实并非如此。我只有来自 Person 的五个字段。所以我的下一个明显问题是如何从 CollegeEmployee 获得 ssn、department 和 salaryFaculty?那是我所缺少的部分。我已经仔细研究了 Java 教程并进行了几个小时的试验,但仍然无法获得我需要做的更正工作。我是否需要通过 CollegeEmployee 调用 People 变量,然后实例化 Faculty 中的 CollegeEmployee 变量?我真的很困惑该怎么做,迫切需要一些指导......

非常感谢,我会在仔细阅读教程中的 super() 关键字部分后回来。

最佳答案

构造函数中的 super() 调用调用父类构造函数。在这种情况下,父类 CollegeEmployee 的构造函数采用五个参数,但传递的参数是八个,这是不正确的。

参见 Keyword super Tutorial ,特别是子类构造函数部分。

关于java - 我不明白为什么我的 java 继承不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984707/

相关文章:

java - 如果我的java home是空的,maven从哪里获取java版本

java - 如何在程序中仅打印斜杠 "/"之前的字母?

c++ - 基类中的 abc 接口(interface)继承和重新公开方法

php - 如何将变量值从一个函数发送到不同页面中的其他函数

javascript - javascript中的面向对象

python - 在多个文件和目录中使用Python OOP时,有助于理解分层继承

java - java中的ontextchanged事件

java - Java 库的标准配置文件位置?

c# - 如何为实现接口(interface)的每个对象设置属性的默认值?

c# - 公共(public)引用应该如何在程序集中传递?