对于protected的变量和方法,其所有子类都应该可以访问,不论是否在同一个package中。看朱仲杰的“java2全方位学习”中有如下例子:package package1;public class A
{
protected int p1;
protected static void p2() {}
protected void p3() { }
}存为为a.java文件,放在package1文件夹中。package package2;import package1.A;public class D extends A
{
public D()
{
A a = new A();
a.p1=1;
a.p2();
A.p2();
a.p3();
p1=1;
p2();
p3();
}
}存为d.java,放在package2文件夹中。
package1和package2都在同一个文件夹中。编译a.java,通过。编译d.java,报错:
package2\d.java:10: p1 可以在 package1.A 中访问 protected
int i = a.p1;//a.p1=1;
^
package2\d.java:13: p3() 可以在 package1.A 中访问 protected
a.p3();
^
2 错误到底protected的访问控制是什么?d为a的子类, 为什么不能访问类a中标记为protected的变量和方法?
{
protected int p1;
protected static void p2() {}
protected void p3() { }
}存为为a.java文件,放在package1文件夹中。package package2;import package1.A;public class D extends A
{
public D()
{
A a = new A();
a.p1=1;
a.p2();
A.p2();
a.p3();
p1=1;
p2();
p3();
}
}存为d.java,放在package2文件夹中。
package1和package2都在同一个文件夹中。编译a.java,通过。编译d.java,报错:
package2\d.java:10: p1 可以在 package1.A 中访问 protected
int i = a.p1;//a.p1=1;
^
package2\d.java:13: p3() 可以在 package1.A 中访问 protected
a.p3();
^
2 错误到底protected的访问控制是什么?d为a的子类, 为什么不能访问类a中标记为protected的变量和方法?
解决方案 »
- swing中setTitle的用法
- 用swing如何实现一款软件的多种语言的切换?
- 基于SOCKET的聊天室、JAVA記事本、JAVA計算器等源程序發送
- jButton的名字怎么实现换行?
- 新手上路学jsp,请问有合适的已经完成的小项目可以参考么?最好是access数据库的。谢谢大家乐。
- 问一段简单的代码,出错了,没看出来错在哪里。谢谢。
- 【精品问题】有关JDK1.4中有HTMLDocument用来解析Html文档的
- 关于qq中类似编辑个人资料里的功能实现
- 有新问题麻烦大家。请问如何将大文件写入SQLServer2000数据库?
- 大家来讨论一下这个问题——————网络安全!如果改变一个方式的话…………
- 关于一道笔试题:java数组求和
- 如何监听鼠标在窗口标题栏上的鼠标拖动事件?
应该不是 protected的关系吧,为什么 A.p2();就能访问呢?
A.p2()是类方法。
把a.去掉就可以了,既然已经继承了A,那么D中自然就可以使用A中的变量和方法
a.p1=1;
a.p2();
A.p2();
a.p3();
这不是继承的用法
无论是否同一个包
只要继承便可使用的
对不对???
D d = new A();
d.***();
A.p2()能访问,是因为p2()是static方法,用类就可以直接访问的。所以没有报错。