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

我不明白为什么我的java继承不起作用,java,oop,inheritance,Java,Oop,Inheritance,在家庭作业方面,我将学习以下三门课 Class | Extends | Variables -------------------------------------------------------- Person | None | firstName, lastName, streetAddress, zipCode, phone CollegeEmployee | Person | ss

在家庭作业方面,我将学习以下三门课

 Class           | Extends         | Variables
 --------------------------------------------------------
 Person          | None            | firstName, lastName, streetAddress, zipCode, phone
 CollegeEmployee | Person          | ssn, salary,deptName
 Faculty         | CollegeEmployee | tenure(boolean)
我很难让教员构造函数正确使用超类中的数据

 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班级

 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.
我得到的错误指向参数之间的不匹配…教员调用八个参数,但CollegeEmployee只有五个。然而,我认为通过扩展CollegeEmployee(扩展Person),我可以在调用这个类时访问所有八个字段。正如已经指出的那样,情况并非如此。我只有Person的五个字段。所以我下一个明显的问题是,我如何从大学雇员那里得到ssn、系和薪水?这就是我丢失的那一块。我已经仔细阅读了Java教程并进行了几个小时的实验,但仍然无法获得需要进行更正的内容。我是否需要通过CollegeEmployee调用人员变量,然后在Faculty中实例化CollegeEmployee变量?我真的很困惑该做什么,迫切需要一些指导

谢谢,在我阅读了教程中的超级关键字部分后,我将在几天后回来

构造函数中的超级调用调用父类构造函数。在本例中,父类CollegeEmployees构造函数接受五个参数,但传递八个参数是不正确的

请参阅,特别是子类构造函数一节。

构造函数中的超级调用调用父类构造函数。在本例中,父类CollegeEmployees构造函数接受五个参数,但传递八个参数是不正确的

请参阅,特别是Faculty.java中的子类构造函数部分。

,您有: 超级域名、姓氏、街道地址、邮政编码、电话号码、部门、ssn、工资

这是在物理上调用CollegeEmployee的构造函数,它只有五个参数。这是一个编译错误

类可能有未在构造函数中设置的变量。您可以使用空构造函数并在另一个方法中设置变量


由于存在继承结构,您只能通过super设置父变量。

在Faculty.java中,您有: 超级域名、姓氏、街道地址、邮政编码、电话号码、部门、ssn、工资

这是在物理上调用CollegeEmployee的构造函数,它只有五个参数。这是一个编译错误

类可能有未在构造函数中设置的变量。您可以使用空构造函数并在另一个方法中设置变量


由于存在继承结构,您只能通过super设置父级变量。

可用性注意:当我看到9个对话框时,我会非常恼火,并开始怀疑它们是否会结束。您可以考虑使用一个收集所有信息的表单,然后创建CyrEngEffice并返回它。即使你不关心可用性,也要考虑是否有人取消了无尽的对话框,并让你拥有一个半初始化的对象。在一个构造函数中放置JopthIon窗格不是一个好主意。当你创建一个新的object时,你应该准备好所有的信息,我知道,但是作业中特别提到要在各个类中放置对话框。我不写作业,我只是被他们为什么要我们以如此不合逻辑的方式来做感到困惑。@dann.dev:LOL!好像:我想他最好现在就习惯这种疯狂…@dwwilson66这是一个糟糕的实现,但我想你可以说它有“一些”价值,因为你可以通过不同的joptionpane更好地跟踪事件的顺序,并查看扩展的类如何使用它继承的类的方法,除此之外,可用性提示:当我浏览了9个对话框,并开始怀疑它们是否会结束时,我会感到相当恼火。您可以考虑使用一个收集所有信息的表单,然后创建CyrEngEffice并返回它。即使你不关心可用性,也要考虑是否有人取消了无尽的对话框,并让你拥有一个半初始化的对象。在一个构造函数中放置JopthIon窗格不是一个好主意。当你创建一个新的object时,你应该准备好所有的信息,我知道,但是作业中特别提到要在各个类中放置对话框。我不写作业,我只是被他们为什么要我们以如此不合逻辑的方式来做感到困惑。@dann.dev:LOL!好像:我想他最好现在就习惯这种疯狂…@dwwilson66这是一个糟糕的实现,但我想你可以说它有“一些”价值,因为你可以通过不同的joptionpane更好地跟踪事件的顺序,并查看扩展的类如何使用它继承的类的方法,除此之外,我接下来的问题是如何
我从大学员工那里得到ssn、系和薪水?这就是我所缺少的部分。教员“拥有”了大学雇员所拥有的一切,没有必要“付诸行动”。当你从Faculty调用super时,它将使用该构造函数中的CollegeEmployee JOptionPane来设置它们。@dann.dev…换句话说,我想得太多了?如果你是这么说的话,这会突然变得更有意义。然后我接下来的问题是,我如何从同事那里获得ssn、部门和工资?这就是我所缺少的部分。教员“拥有”了大学雇员所拥有的一切,没有必要“付诸行动”。当你从Faculty调用super时,它将使用该构造函数中的CollegeEmployee JOptionPane来设置它们。@dann.dev…换句话说,我想得太多了?只要从教员那里打电话给CollegeEmployee,他就会调用方法来提示输入……如果你是这么说的,这会突然变得更有意义。你只能通过super设置家长的变量。很高兴知道。这有助于弄清楚它为什么这么做…谢谢!您只能通过super设置父级变量。很高兴知道。这有助于弄清楚它为什么这么做…谢谢!