Java наследование и super () не работают должным образом - PullRequest
2 голосов
/ 02 апреля 2012

Для выполнения домашнего задания я работаю со следующим.Это назначенная классовая структура, я знаю, что это далеко не лучший дизайн.1007 * в Faculty разрешит доступ к переменным в CollegeEmployee, а также Person.С кодом выше, он прекрасно компилируется, когда я ТОЛЬКО включаю переменные Person.Как только я пытаюсь использовать ssn, department, or salary, я получаю следующие ошибки компиляции.

 Faculty.java:15: error: constructor CollegeEmployee in class CollegeEmployee can not be applied to the given types:
            super(firstName,lastName,streetAddress,zipCode,phoneNumber,ssn,department,salary);
                                                                                            ^
Required: String,String,String,String,String
   Found: String,String,String,String,String,String,String,String
  reason: actual and formal argument lists differ in length

Я совершенно сбит с толку этой ошибкой ... которая является реальной и формальной?Person имеет пять аргументов, CollegeEmployee имеет 3, поэтому я предполагаю, что что-то не так с передачей параметров ... но я не совсем уверен, с чего начать это исправлять.Что мне не хватает?

Вот мой класс 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 setSSN(String ssn)
     {         this.ssn = ssn;         }
     public void setAnnSalary(double annSalary)
     {        this.annSalary = annSalary;     }
     public void setDepartment(String department)
     {        this.department = department;    }
 //
     public String getSSN()
     {        return ssn;                }
     public double getAnnSalary()
     {        return annSalary;          }
     public String getDepartment()
     {        return department;         }
 //
     public void display()
     {
         super.display();
         JOptionPane.showMessageDialog
         (null, "\nSSN: " + getSSN() + "\nAnnual Salary: " 
          + getAnnSalary() + "\nDepartment: " + getDepartment(), 
          "Information", JOptionPane.QUESTION_MESSAGE);
     }
 }

Ответы [ 4 ]

7 голосов
/ 02 апреля 2012

Вы сделали случайный ; в конце вашего конструктора:

      public Faculty(String firstName, String lastName, String streetAddress,   String zipCode, String phoneNumber,String ssn,
           String Department,double salary); // <--- this has to go

И, как указано в комментарии, у вас есть String Department в конструкторе, но вы передаете department (неправильная прописная буква), переименуйте аргумент конструктора в String department

4 голосов
/ 02 апреля 2012

Удалить ';'в конце месяца - двойная зарплата);

public Faculty(String firstName, String lastName, String streetAddress, String zipCode, String phoneNumber,String ssn,String Department,double salary); <--- remove this
      {
4 голосов
/ 02 апреля 2012

Удалите ; в конце строки объявления конструктора:

public Faculty(String firstName, String lastName, String streetAddress, String zipCode, String phoneNumber,String ssn,String Department,double salary);
//----------------------------------------------------------------------------------------------------------------------------------------------------^
1 голос
/ 02 апреля 2012

Ваш суперкласс CollegeEmployee должен иметь конструктор с этими восемью аргументами, также типы аргументов должны совпадать

public class CollegeEmployee
{
    public CollegeEmployee(String firstName, String lastName, String streetAddress, String zipCode,
                        String phoneNumber, String ssn, String department, double salary)
    { 
        // do stuff
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...