关于继承的一道试题苦逼无分求解答啊~
public class One {
protected void printA()
{System.out.println("one A");}
private void printB()
{System.out.println("one B");}
protected void printAB()
{printA();printB();} }
public class Two extends One {
protected void printA()
{System.out.println("two A");}
private void printB()
{System.out.println("two B");}
public static void main(String[] args)
{ Two t = new Two(); t.printAB();} }
结果是:
two A
one B
不太理解为什么这样子,父类的printB()是private为什么还会被调用??求解释啊啊,拜谢了~
[解决办法]
我的理解是
首先可以看到t.printAB()这个方法是父类的,调用这个方法的时候会先执行父类的方法,如果子类重写了才会去执行子类的,
在父类定义的private的方法在子类肯定不存在重写那么只有调用父类的 而定义的 protected 方法被子类重写那么相当于父类方法被覆盖 所以结果显而易见了! 你不妨把这些修饰符多换下看是不是想要的结果!
[解决办法]