java code:
public class A {
private void m()
{
System.out.println("A");
}
public static void main(String[] args) {
A a = new B();
a.m();
}
}
public class B extends A{
private void m() {
System.out.println("b");
}
}
现有2个类A和B,B继承了A,A中有个main方法,使用基类声明,子类实现,调用m()方法。打印输出A
public class A {
private void m()
{
System.out.println("A");
}
}
public class B extends A{
private void m() {
System.out.println("b");
}
<span style="white-space:pre"> </span>public static void main(String[] args) {
A a = new B();
a.m();
}
}
现在m()方法报错,因为基类中的m()方法是private的,子类中无法调用。
public class A {
public void m()
{
System.out.println("A");
}
}
public class B extends A{
public void m() {
System.out.println("b");
}
<span style="white-space:pre"> </span>public static void main(String[] args) {
A a = new B();
a.m();
}
}
现将m()方法改为public的,子类覆盖了m()方法,所以不论main()方法写在哪个类中都会输出b。
结论:子类覆盖了基类的方法,由基类声明,子类实现的对象,默认调用子类的覆盖方法。