public class classA_classB {
public static void main(String[] args) {
A a ;
String name = "I'm";
a = new B();
System.out.println("Result = " + a.func1(name));
System.out.println("Result = " + a.func2(name));
a = new C();
System.out.println("Result = " + a.func1(name));
System.out.println("Result = " + a.func2(name));
B b = new B();
System.out.println("Result = " + b.func1(name));
System.out.println("Result = " + b.func2(name));
}
}
class A{
public String func1(String a) {
return a + " class A func1";
}
public static String func2(String a) {
return a + " class A static func2";
}
}
class B extends A{
public String func1(String a) {
return a + " class B func1";
}
public static String func2(String a) {
return a + " class B static func2";
}
}
class C extends A{
public String func1(String a) {
return a + " class C func1";
}
public static String func2(String a) {
return a + " class C static func2";
}
}
//非静态:A a = new B();//编译看左边,运行看右边
//静态:A a = new B();编译看左边,运行看左边
对于向上转型的,可以用注释那里的口诀
但是对B b = new B(),
你可以看到new 出来的对象b,都是调用自己的方法
如果B中没有这些方法呢?我们把B中的方法注释掉看看