2015-04-04 94 views
-1

我必須設計一個由2個子類組成的類。假設A和B和B也有2個子類。這部分真的不重要,因爲我用不同的名字完成了這一切。Java,調用方法和覆蓋

我努力嘗試運行我的代碼。我有代碼,但我得到2錯誤。我無法弄清楚如何解決它。

的錯誤有以下幾種:

aaa1.java:147:找不到符號
符號:構造員工(java.lang.String中,java.lang.String中,java.lang.String中, java.lang.String)
location:class Employee
super(name,address,phone,email);
^
aaa1.java:179:找不到符號
符號:構造員工(java.lang.String中,java.lang.String中,java.lang.String中,java.lang.String中)
位置:類員工
super(姓名,地址,電話,電子郵件);

我的代碼:

import java.util.*; 

public class aaa1 { 
    public static void main(String[] args){ 
     Person p = new Person("J11h", "123 ABC St", "908-123-456", "[email protected]"); 
     Student s = new Student("222se1h", "123 ABC St", "908-123-456", "[email protected]", 1); 
     Date date = new Date(); 
     Employee e = new Employee("wewesh", "123 ABC St", "908-123-456", "[email protected]", "123", 2000.00, date); 
     Faculty f = new Faculty("eewrr", "123 ABC St", "908-123-456", "[email protected]", "1pm - 3pm", "Head of the department"); 
     Staff st = new Staff("rrereh", "123 ABC St", "908-123-456", "[email protected]", "Assistant"); 
     System.out.println(p.toString()); 
     System.out.println(s.toString()); 
     System.out.println(e.toString()); 
     System.out.println(f.toString()); 
     System.out.println(st.toString()); 
    } 
} 

class Person { 
    //A person has a name, address, phone number, and email address. 
    String name; 
    String address; 
    String phone; 
    String email; 

    public Person(String name, String address, String phone, String email) { 
     this.name = name; 
     this.address = address; 
     this.phone = phone; 
     this.email = email; 
    } 

    public String getName(){ 
     return name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

    public String getAddress(){ 
     return address; 
    } 

    public void setAddress(String address){ 
     this.address = address; 
    } 

    public String getPhone(){ 
     return phone; 
    } 

    public void setPhone(String phone){ 
     this.phone = phone; 
    } 

    public String getEmail(){ 
     return email; 
    } 

    public void setEmail(String email){ 
     this.email = email; 
    } 

    //Overriding 
    public String toString(){ 
     return "The person's information is "+name+ ", " +address+ ", " +phone+ ", " +email; 
    } 
} 

class Student extends Person{ 
    //A student has a class status 
    //(freshman,sophomore, junior, or senior). 
    //Define the status as a constant. 
    final int freshman =1; 
    final int sophomore =2; 
    final int junior=3; 
    final int senior=4; 
    int status; 

    public Student(String name, String address, String phone, String email, int status) { 
     super(name, address, phone, email); 
     this.status = status; 
    } 

    public int getStatus(){ 
     return status; 
    } 

    public void setStatus(int status){ 
     this.status = status; 
    } 

    //Overriding 
    public String toString(){ 
     return "The student's information is: " +super.toString()+ "," + status; 
    } 
} 

class Employee extends Person{ 
    //An employee has an office, salary, and date hired. 
    String office; 
    double salary; 
    java.util.Date dateHired; 

    public Employee(String name, String address, String phone, String email, String office, double salary, Date dateHired){ 
     super(name, address, phone, email); 
     this.office = office; 
     this.salary = salary; 
     this.dateHired = dateHired; 
    } 

    public String getOffice(){ 
     return office; 
    } 

    public void setOffice(String office){ 
     this.office = office; 
    } 

    public double getSalary(){ 
     return salary; 
    } 

    public void setSalary(double salary){ 
     this.salary = salary; 
    } 

    public void setDateHired(Date dateHired){ 
     this.dateHired = dateHired; 
    } 

    //Overriding 
    public String toString(){ 
     return "The Employee's information is: " +super.toString()+ ", " +office+ ", " +salary+ ", " +dateHired; 
    } 
} 

class Faculty extends Employee{ 
    //A faculty member has office hours and a rank. 
    String officeHours; 
    String rank; 

    public Faculty(String name, String address, String phone, String email, String officeHours, String rank){ 
     super(name, address, phone, email); 
     this.officeHours = officeHours; 
     this.rank = rank; 
    } 

    public String getOfficeHours(){ 
     return officeHours; 
    } 

    public void setOfficeHours(String officeHours){ 
     this.officeHours = officeHours; 
    } 

    public String getRank(){ 
     return rank; 
    } 

    public void setRank(String rank){ 
     this.rank = rank; 
    } 

    //Overriding 
    public String toString(){ 
     return "The faculty's information is: " +super.toString()+ ", " + officeHours + ", " + rank; 
    } 
} 

class Staff extends Employee{ 
    //A staff member has a title 
    String title; 

    public Staff(String name, String address, String phone, String email, String title){ 
     super(name, address, phone, email); 
     this.title = title; 
    } 

    public String getTitle(){ 
     return title; 
    } 

    public void setTitle(String title){ 
     this.title = title; 
    } 

    //Overriding 
    public String toString(){ 
     return "The staff's information is: " +super.toString()+ "," + title; 
    } 
} 

你能幫幫我嗎?

+0

請發表評論,表明錯誤的行號。 – Razib 2015-04-04 21:55:30

+0

你有沒有嘗試把兩個類放入單獨的文件? – clearlight 2015-04-04 21:56:05

+0

@Razib在Employee類中發生錯誤。它在超級構造函數內。此部分: 「公開職員(字符串名稱,字符串地址,字符串電話,字符串電子郵件,字符串辦公室,雙重工資,日期dateHired){超級(姓名,地址,電話,電子郵件);」 – Joseph 2015-04-04 21:59:47

回答

2

Employee類包含下列參數的構造函數:

public Employee(String name, String address, String phone, String email, String office, double salary, Date dateHired){ 

而且你FacultyStaff類,擴展Employee,含有這種顯式調用super

super(name, address, phone, email); 

數調用super時參數與Employee類構造函數中的參數數目不匹配;當它需要一個額外的String,doublejava.util.Date時,您提供了四個字符串參數。

+0

謝謝。我的代碼現在正在工作。 我想給你們所有人發綠色檢查,但是我不能。你的回答清晰有效。再次感謝。 – Joseph 2015-04-04 23:05:47

0

我相信,你擁有了它擴展您還需要包括原始的構造函數,所以你必須有相同的構造作爲一個人在學生工作人員和員工(有@Override)

即使它只是調用super();

所以這是一個構造函數(字符串,字符串,字符串,字符串); 員工(java.lang.String中,java.lang.String中,java.lang.String中,java.lang.String中)

1

Faculty - 在管線147類 - 擴展Employee,所以你需要調用超級構造從Employee

public Employee(String name, String address, String phone, String email, String office, double salary, Date dateHired){ 

即你需要傳遞所有的參數,如果你想要實例的EmployeeFaculty一個子類。

或者,您可以在Employee中聲明另一個構造函數,它只需要這4個參數。但是,您需要決定如何處理尚未傳入的參數 - 您只需將它們設置爲null,還是將它們設置爲安全的默認值?這取決於你的應用程序。

0

你會發現這個問題,如果你認爲的同時:

  • 什麼將是一個教師或工作人員的辦公室,工資和僱用日期?