黑马程序员技术交流社区
标题:
关于包的问题,求助
[打印本页]
作者:
491138002
时间:
2014-3-31 10:34
标题:
关于包的问题,求助
package packb;
public class DemoB
{
protected void method(){
System.out.println("DemoB method run");
}
}
package packa;
public class DemoA extends packb.DemoB
{
public void show(){
System.out.println("DemoA show run");
}
}
package pack;
class PackageDemo
{
public static void main(String[] args)
{
packa.DemoA d = new packa.DemoA();
d.show();
d.method();
}
}
复制代码
为什么对象d不能访问method方法呢?
QQ截图20140331103326.png
(4.68 KB, 下载次数: 16)
下载附件
2014-3-31 10:33 上传
运行结果
作者:
ehuashao
时间:
2014-3-31 11:01
一. protected 访问控制符能被用于方法和成员变量。
二. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
三. 能被该类的子类所访问,子类可以和父类不在一个包中。
这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。
子类和父类可以不在一个包中,但是必须要在子类内部调用父类的protected方法:
public class DemoA extends packb.DemoB
{
public void show(){
System.out.println("DemoA show run");
new DemoA().method();
}
}
复制代码
比如上面代码,在子类A中就可以调用父类的method方法了。
作者:
黄晓鑫
时间:
2014-3-31 11:02
本帖最后由 黄晓鑫 于 2014-3-31 11:04 编辑
不同包中要加包名访问 类名.包名.类名.方法
作者:
osully
时间:
2014-3-31 11:04
protected
只能在其子类中调用此修饰符修饰的方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2