日期:2014-05-20 浏览次数:20695 次
class Base
{
private String showMe()
{
return "Base";
}
public void print()
{
System.out.print(showMe());
}
}
public class Sub extends Base
{
public String showMe()
{
return "Sub";
}
// public void print()
// {
// System.out.print(showMe());
// }
public static void main(String[] args)
{
Sub sub = new Sub();
sub.print();
}
}
public void print()
{
super.print();
}
public static void main(String[] args)
{
Sub sub = new Sub();
sub.print();
/*
sub 自己没有print所以调用的是Base 的print,因为继承了Base。
Base 的print 方法调用的showome() 是this.showme(),
Base中的showme 是private 的,不能被重写,所以不会检查子类有没有重写直接调自身的showme()
------
去sub的print注释后,调用shome 直接就是调用自己的print 压根就跟继承没多少关系
因为你使用的是Sub sub = new Sub(); 非 Base sub = new Sub();
-----
试一下把Base 的showme() 改为public ,其它维持原状,相同的程序就会打印sub了。
调用Base 的print --> print 调用this.showme() ,因为new 的是Sub,而且showme 是public是可被重写的
就会检查Sub有没有重写showme ,发现重写了调用Sub的showme
*/
}