感谢 Blackcompe
如果您使用的是列表实现的通用版本,则不需要强制转换,例如
ArrayList<BestTutor> list = null;
BestTutor c = list.get(0);
Generics 是一种类型安全方法,它告诉 Java 除了 BestTutor 之外什么都不会进入这个集合,所以你总是可以打赌 List.get() 将返回一个 BestTutor 或任何有界对象。 BestTutor 被称为有界对象。如果您不使用泛型,则有界对象是 Object.,例如
ArrayList<Object> list;
虽然,这个边界是隐含的,所以它只是:
ArrayList list;
Java 将检查 computeArea 是否已被覆盖。如果有,它将使用该版本,否则它将使用继承的版本。例如
class Parent {
void callMe(){
System.out.println("Parent");
}
}
class Child {
void callMe(){
System.out.println("Child");
}
}
Child c = new Child();
c.callMe(); //will display Child
它将调用 Parent 版本,该版本将打印 Parent,但我们覆盖了该方法。这是基本的覆盖。 Java也有多态性:
Parent p = new Child();
p.callMe(); //will display Child
Parent 类型的引用可以引用 Child 的实例。
如果您调用已被 Child 覆盖的 Parent 方法,Java 知道调用 Child 的实例方法,而不是 Parent 的。
有点高级,但在更高级的设计方法中会非常有用,比如"coding to interfaces"。