对于家庭作业,我正在与以下三个类(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 和 salary
到 Faculty
?那是我所缺少的部分。我已经仔细研究了 Java 教程并进行了几个小时的试验,但仍然无法获得我需要做的更正工作。我是否需要通过 CollegeEmployee
调用 People
变量,然后实例化 Faculty
中的 CollegeEmployee
变量?我真的很困惑该怎么做,迫切需要一些指导......
非常感谢,我会在仔细阅读教程中的 super() 关键字部分后回来。
最佳答案
构造函数中的 super()
调用调用父类构造函数。在这种情况下,父类 CollegeEmployee
的构造函数采用五个参数,但传递的参数是八个,这是不正确的。
参见 Keyword super Tutorial ,特别是子类构造函数部分。
关于java - 我不明白为什么我的 java 继承不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984707/