public class A {
public int a=0;
public int getA() {
return a;
}
public void play(){System.out.println("AA");}
public static void mystatic(){System.out.println("AA static");}
private void testPrivate(){System.out.println("AA private method");}
}
public class B extends A{
public int a=1;
public int getA(){
return a;
}
public void play(){System.out.println("BB");}
public static void mystatic(){System.out.println("BB static");}
private void testPrivate(){System.out.println("BB private method");}
}
public static void main(String[] args) throws FileNotFoundException {
A a = new B();
System.out.println(a.a);
System.out.println(a.getA());
a.play();
a.mystatic();
//a.testPrivate();
}
输出结果:
0
1
BB
AA static
说明:
1.任何域(属性)直接访问都将由编译器解析,不是多态的。
2.通过接口访问属性,或方法重载,一定是多态的。
3.如果某个方法是静态的,就不具备多态。是由于静态方法与类关联,并非与对象关联。
4.覆盖只有在某方法是基类接口的一部分才会出现。如果某方法是private,它就不是基类的接口的一部分,它仅是一些隐藏于类中的程序代码,只不过是具有相同的名称而已,并不具备多态性质。