我试了一下,好像就是包访问权限?
包外继承该类的类好像也不能访问protected成员?
包外继承该类的类好像也不能访问protected成员?
解决方案 »
- java实现的FtpClient , 下载到本地后,文件名正确但文件大小为0
- 如何让鼠标拖动时响应得更快
- 谁有上次JAVA CUP的题目啊?
- 怎样写出高质量的java代码?求有关编写风格和质量的文章和书籍。
- JAVA怎么打包?(答者有分!)
- 关于 JTextField 和 JTable 的2个小问题 请帮忙
- 高分求 视频开发资料.--怎么样编程采集摄像头的数据.
- java.lang.UnsatisfiedLinkError: no nlsxbe in java.library.path?
- 也是Button的大小问题
- 初学JAVA,请不吝赐教
- 关于HashSet保证自定义对象唯一性的问题
- JAVA的项目要怎样做才好呢
准确点说应该是子实例可以访问(就是通过super或者this或者直接调用)
Test1.java
package mypackage;
import java.util.*;
import java.lang.reflect.*;
public class Test1{
protected void protectedint(){
System.out.println("proectedint");
}
}Test2.java
package mypackage2;import mypackage.*;
public class test2 extends Test1{
public static void main(String[] arg){
TestArrayList t1 = new TestArrayList();
t1.protectedint();//不能访问
}
public void readprotected(){
protectedint();//这样访问就可以。
}
}运行的时候出错:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method protectedint() from the type TestArrayList is not visible难道不能在static函数里面访问protected成员吗?
如果在非static成员里访问就可以。
protected不但是只允许子类访问,而且必须是统一个实例的
A extends B
那么A的方法里只能通过super或者this来访问B的protect方法,而不可以new一个B来访问
protected :同包内均可用
public :全部可用
怎么上面看不到这个类啊
应该这样就会可以吧:
test2 t1=new text();
t1.protectedint();
你看看吧
这样应该就能访问了
自己试试吧
你题目给的分好低哦
记得多给姐姐一点点哦
如果不在同一个包内,是不能访问的。
public class Package1{protected void protectedint(){
System.out.println("protected类成员在不同包中对扩展类可见");
}}//Test2.javapackage mypackage2;import mypackage.*;
public class Package2 extends Package1 { public static void main(String[] arg){ Package2 t1 = new Package2 (); t1.protectedint();//不能访问
t1.readprotected();}
public void readprotected(){
protectedint();//这样访问就可以
}
}执行结果:protected类成员在不同包中对扩展类可见
protected类成员在不同包中对扩展类可见不知说的是否清楚?
就“保护”这个词而言,更进一步的讲,它并非对使用该对象的用户(下面称为用户)做出使用某个成员的授权,而是对延展该类的设计人员(下面称为设计人员)做出延展问题领域的授权。
受保护成员容许在派生类当中被使用,但不允许使用本类对象的用户代码直接使用。实际上是对设计人员的有限度授权,和对用户的拒绝授权。”在子类中你可以直接使用protectedint();
比如上面的
public void readprotected(){
protectedint();
}
因为protected 成员对于子类可见。
但是你不能通过实例化Package2 t1,来访问t1.protectedint(); 因为protected成员对于包外的类对象是不可见的。
当然,对于在同一包中的类的对象是可见的。比如
Test1.java
package mypackage;
import java.util.*;
import java.lang.reflect.*;
public class Test1{
protected void protectedint(){
System.out.println("proectedint");
}
public static void main(String[] args){
Test1 t1 = new Test1();
t1.protectedint();
}
}