public class Overwrite { public static void main(String[] atgs) { B1 b = new B1(); b.fun(); } } class A1{ private void fun() { System.out.println("A类中fun()方法执行"); } } class B1 extends A1{ public void fun() { System.out.println("B类中fun()方法执行"); } }
http://blog.csdn.net/wn1017888485/article/details/46051981
这个博客挺能解释问题的
在我看来,继承父类并重写父类的方法的目的是为了实现“多态”,也就是在调用方法时优先调用子类的方法
但看了你的代码,你直接new出来一个B1的对象,并运行B1的fun();方法,这个时候B1是否重写父类的方法已经不重要了!
最好的方式是这样的:
public class OverWrite {
public static void main(String args[]) {
A1 a1 = new A1();
A1 a2 = new B1();
a1.fun();
a2.fun();
}
}
class A1{
public void fun() {
System.out.println("A类中fun()方法执行");
}
}
class B1 extends A1 {
@Override
public void fun() {
System.out.println("B类中fun()方法执行");
}
}