java的多态性经常用于“动态绑定”技术。这里不再详细介绍。这里想要强调的是在使用java多态性时需要注意的一些问题。
(1)只有非private的方法才能被覆盖;但是还是要注意private方法的“覆盖”。此时,编译器不报错,但是并不是按照“多态”的思想输出。
public class Father
{
private void f(){System.out.println("private f()"); }
public static void main(String[] args)
{
Father fa=new Child();
fa.f();
}
}
class Child
{
public void f()
{
System.out.println("public f()");
}
}
//output public f()
(2)域变量(成员变量)是不能够被“重载”的。父类和子类具有相同的public成员变量,即使把子类的引用传递给父类的引用,父类引用访问该成员变量时还是访问的自身的成员变量。
只有成员函数才能被重载!
实际上不需要考虑这个问题,因为通常成员变量都是private的。