java 多态产生的疑问

java 多态产生的疑问

对于标准的多态示例程序
Class A {
public void test(){
System.out.println("A");
}
}
Public Class B extends A{
//@override 有无都不会报错
public void test(){
System.out.println("B");
}
public static void main(String[] arguments){
    A a=new B();
    a.test();
}
}
/*output:
B
*///:~
这个程序很好的示意了向上转型后A对B实例的test的调用。
然而并不是所有的类型的方法都能够支持多态。 对于是private的方法,我们应该格外注意。
 1

package cn.edu.neu.deepweb407.gui;

public class A {
private  void test(){
 System.out.println("A");
}

public static void main(String[] arg1s) {
 A a=new B();
 a.test();
}
}
class B extends A{
 public void test(){
  System.out.println("B");
 }
}

16 /**/ /*output:
17A
18*/
// :~
这个结论是,a.test()调用的是A类的方法test。因为B中的test方法并不是覆盖了A类的方法。因此,A调用的只是他自身的test方法。大家注意的是,尽量不要在子类中声明和父类私有方法相同名称的方法。

你可能感兴趣的:(java 多态产生的疑问)