2015-04-24 1 views
1

конструктор Студент в классе javaapplication 14.Student не может быть применяется к данным типам; требуется: java.lang.String, INT, java.lang.String, java.lang.String дважды найдено: java.lang.String, двойная причина: фактические и формальные списки аргументов различаются по длинеERROR списки фактических и формальных аргументов различаются по длине

Это линия, которая дает мне ошибку

super(idNum, gpa); 

вот мой код:

package javaapplication14; 

public class JavaApplication14  
{ 
    public static void main(String[] args) 
    { 
     Person bob = new Person("Coach Bob", 27, "M"); 
     System.out.println(bob); 

     Student lynne = new Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
     System.out.println(lynne); 
     Teacher mrJava = new Teacher("Duke Java",34,"M","Computer Science",50000); 
     System.out.println(mrJava);   
    } 
} 

class Person 
{ 
    protected String myName ;   
    protected int myAge;    
    protected String myGender;  

    public Person(String name, int age, String gender) 
    { 
     myName = name; 
     myAge = age ; 
     myGender = gender; 
    } 

    @Override 
    public String toString() 
    { 
     return myName + ", age: " + myAge + ", gender: " +myGender; 
    } 


    //These are the set methods 
    void setName(String name) 
    { 
     myName = name;  
    } 

    void setAge(int age) 
    { 
     myAge = age ;  
    } 

    void setGender(String gender) 
    { 
     myGender = gender;  
    } 

    //These are the get methods 
    String myName() 
    { 
     return myName;  
    } 

    int myAge() 
    { 
     return myAge;  
    } 

    String myGender() 
    { 
     return myGender;  
    } 
} 


class Student extends Person 
{ 
    protected String myIdNum;  
    protected double myGPA; 

    public Student(String name, int age, String gender,String idNum, double gpa)    
    { 
     super(name, age, gender); 
     myIdNum = idNum; 
     myGPA = gpa; 
    } 

    //These are the set methods 
    void setmyIdNum(String idNum) 
    { 
     myIdNum = idNum; 
    } 

    void setmyGPA(double gpa) 
    { 
     myGPA = gpa; 
    } 

    @Override 
    public String toString() 
    { 
     return super.toString() + ", student id: " + myIdNum + ", gpa: " + myGPA; 
    } 

    public String myIdNum() 
    { 
     return myIdNum; 
    } 

    double myGPA() 
    { 
     return myGPA; 
    } 
} 


class Teacher extends Person 
{ 
    public double mySalary; 
    public String mysubjectName; 

    public Teacher(String name, int age, String gender, String 
subjectName,double salary) 
    { 
     super(name, age, gender); 
     mysubjectName = subjectName; 
     mySalary = salary; 
    } 

    //These are the setter methods 
    void setsubjectname(String subjectName) 
    { 
     mysubjectName = subjectName; 
    } 

    void setsalary(double Salary) 
    { 
     mySalary = Salary;  
    } 

    @Override 
    public String toString() 
    { 
     return super.toString() + ", subject name: " + mysubjectName + ", Salary: " 
+ mySalary; 
    } 

    //These are the getter methods 
    public String getsubjectname(String subjectName) 
    { 
     return subjectName; 
    } 
    double getsalary(double Salary) 
    { 
     return Salary ; 
    } 

class CollegeStudent extends Student 
{ 
    public String myMajor;  
    public int myYear; 

    public CollegeStudent(String name, int age,String gender, 
    String idNum, double gpa, int year, String major)  
    { 
     super(idNum, gpa); 
     myMajor = major; 
     myYear = year; 
    } 


    void setmajor(String Major) 
    { 
     myMajor = Major; 
    } 

    void setyear(int Year) 
    { 
     myYear = Year; 
    } 

    @Override 
    public String toString() 
    { 
     return super.toString() + ", major: " + myMajor + ", Year: " + myYear; 
    } 

    //These are the getter methods 
    public String getmajor(String myMajor) 
    { 
     return myMajor; 
    } 
    public int getyear(int myYear) 
    { 
     return myYear ; 
    } 
} 
} 
+0

Это не js. В Java вы должны указать точное количество точных (или реализующих) типов, как определено в одной из сигнатур метода. –

+2

Добро пожаловать в Stack Overflow. Вы отправили более 200 строк кода без отступов - ваш вопрос будет легче читать и в целом полезен для будущих посетителей, если вы выделите это на минимальный * пример, а затем опубликуйте это с приятным отступом , –

+1

ясно указывает, что такого конструктора нет, единственным конструктором, доступным в классе 'Student', является' Student (String name, int age, String gender, String idNum, double gpa) ' – nikis

ответ

0

Ваш супер класс Student имеет следующий конструктор с 5 пар ameter

public Student(String name, int age, String gender,String idNum, double gpa) 

Но в CollegeStudent конструктор, super(idNum, gpa); ожидать конструктор с двумя параметра Student(String idNum, double gpa), который отсутствует в суперкласса. Таким образом, определить конструктор в Student класса, как:

class Student extends Person { 
    public Student(String idNum, double gpa){ 

    } 
} 
0

Класс Student, а также класс Person не имеет constuctor с signature (String, double).

Таким образом, вы должны создать этот конструктор в одном из суперкласса или у вас есть для вызова другого конструктора.

0

Нет такого конструктора с двумя параметрами в классе Student

Смежные вопросы