【问题标题】:I don't understand why this program is not working. Polymorphism [closed]我不明白为什么这个程序不起作用。多态性[关闭]
【发布时间】:2017-03-14 11:11:12
【问题描述】:

我最近开始编程,忙于继承、多态和覆盖。现在我刚刚制作了这个程序,由于某种原因它不起作用。 编译器下划线 " = new Arraylist(); 但我不知道为什么。

代码如下:

超类:人

public class Person {
private String firstName;
private String lastName;

public Person(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

public void print() {
    System.out.println("\t" + firstName + " " + lastName);
}
}

子类:教师

public class Teacher extends Person {
public Teacher(String firstName, String lastName) {
    super(firstName, lastName);
}

public void print() {
    System.out.println("Professor Details: ");
    super.print();
}

}

子班学生:

public class Student extends Person {
private int graduationYear;
private double gpa;

public Student(String firstName, String lastName, int graduationYear, double gpa) {
    super(firstName, lastName);
    this.graduationYear = graduationYear;
    this.gpa = gpa;
}

public void print() {
    System.out.println("Student Details: ");
    super.print();
    System.out.println("\t" + graduationYear);
    System.out.println("\t" + gpa);
}
}

主类:(在我初始化arraylist的地方,由于某种原因它不起作用。(胖是编译器中的错误:Arraylist people = new Arraylist();

public class Main {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    ArrayList<Person> persons = new Arraylist();
    persons.add(new Student("Sam", "Young", 2017, 3.6));
    persons.add(new Student("Dan", "Sella", 2012, 2.5));
    persons.add(new Student("Kevin", "Cane", 2016, 2.7));

    for(Person person : persons) {
        person.print();
    }
}

}

感谢任何帮助。

【问题讨论】:

  • Java 区分大小写。 ArrayList != Arraylist。您还希望避免使用原始类型,但这是一个稍微不同的问题。

标签: java inheritance arraylist polymorphism overriding


【解决方案1】:

ArrayList 是这样初始化的:

ArrayList<Person> persons = new ArrayList<>();

或者,如果您使用的是 Java SE 7 以下的版本:

ArrayList<Person> persons = new ArrayList<Person>();

注意&lt;&gt;(菱形)和ArrayList。

【讨论】:

  • 啊……我好乱。对不起。感谢您的帮助!
【解决方案2】:

您应该像下面的代码一样创建ArrayList 对象:

ArrayList<Person> persons = new ArrayList<Person>();

在上面您缺少在对象创建中添加 &lt;Person&gt;

【讨论】:

  • 谢谢。我很乱。 :(
【解决方案3】:

你的代码:

ArrayList<Person> persons = new Arraylist();

ArrayList 个人 = 新 Arraylist(); 这里有大小写错误

试试

ArrayList<Person> persons = new ArrayList<Person>();

如果您仍然有错误,可能会将您的 java 编译器级别升级到 1.5 或更高版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2021-01-29
    • 1970-01-01
    • 2013-08-09
    • 2016-08-15
    相关资源
    最近更新 更多