//: UpcastingTest.javapublicclassUpcastingTest{publicstaticvoidmain(Stringargs[]){B b =newB();b.f();A a = b;// 向上转型不需要强制转换a.f();// 并不会调用基类函数}}/**OutputB.f()B.f()*/classA{voidf(){System.out.println("A.f()");}}classBextendsA{voidf(){System.out.println("B.f()");}}
//: CovarianReturn.java
class Grain {
public String toString() { return "Grain"; }
}
class Wheat extends Grain {
public String toString() { return "Wheat"; }
}
class Mill {
Grain process() {
return new Grain();
}
}
class WheatMill extends Mill {
Wheat process() {
return new Wheat();
}
}
public class CovarianReturn {
public static void main(String args[]) {
Mill m = new Mill();
Grain g = m.process();
System.out.println(g);
m = new WheatMill();
g = m.process();
System.out.println(g);
}
} /**Output
Grain
Wheat
*/