浏览 3082 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-21
最后修改:2010-06-23
一提到访问控制符protected,即使是初学者一般都会很自信的认为自己在这方面的理解没有问题。那好,我们提一个问题出来看看.....
问题提出:
//代码1:包A中有一个动物类 package testa; public class Animal { protected void crowl(String c){ System.out.println(c); } } //代码2:包B中有两个类——猫类和鼠类 package testb; import testa.Animal; class Cat extends Animal{ } class Rat extends Animal{ public void crowl(){ crowl("zhi zhi"); //没有问题,继承了Animal中的protected方法——crowl(String) Cat cat=new Cat(); cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible } } 既然,猫和鼠都继承了动物类,那么在鼠类的作用范围内,看不到猫所继承的crowl()方法呢?
症结所在:
总之,当B extends A的时候,在子类B的作用范围内,只能调用本子类B定义的对象的protected方法(该方法从父类A中继承而来)。而不能调用其他A类对象的protected 方法 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |