多态中成员变量、成员方法、静态方法访问的特点
特点
-
成员变量:编译看左边(父类),运行看左边(父类)
-
成员方法:编译看左边(父类),运行看右边(子类) (动态绑定)
-
静态方法:编译看左边(父类),运行看左边(父类)(静态和类相同,算不上重写,所以访问还是左边的)
-
总结:只有非静态的成员方法才会编译看左边,运行看右边。
代码
public class Demo2_polymorphic {
public static void main(String[] args) {
Father f = new Son2 ( );
System.out.println (f.num);
f.print ( );
f.Method ( );
System.out.println ("-----------------");
Son2 son = new Son2 ( );
System.out.println (son.num);
son.print ( );
son.Method ( );
}
}
class Father {
int num = 10;
public void print() {
System.out.println ("father");
}
public static void Method() {
System.out.println ("father static method");
}
}
class Son2 extends Father {
int num = 20;
public void print() {
System.out.println ("zilei");
}
public static void Method() {
System.out.println ("son static method");
}
}
结果
10
zilei
father static method
-----------------
20
zilei
son static method
内存图方便理解:
成员变量