首页 热点资讯 义务教育 高等教育 出国留学 考研考公

java的访问权限问题

发布网友 发布时间:2022-04-25 06:14

我来回答

4个回答

热心网友 时间:2023-11-02 07:54

可以肯定,这个程序一定报错,如楼主所说:“The field clone1.name is not visible”,也就是说这个区域中的name这个属性是不可见的。

因为protected属于受保护的访问权限,一个类中的成员如果使用了protected访问权限,则只能被本包及不同包的子类访问。

很显然你的两个类不在同一个包,就因该用子类的实例对象访问,而你却在包含子类的包中中实例化了父类对象,你可能在想,我明明是在子类中实例化了父类对象,我要访问我自己的成员还不行吗?。。可你要想清楚,你的父类并不在这个包。(这时你在子类的包中用父类的实例化对象访问用protected修饰的属性,它压根就找不到,所以会报出不可见的错误)所以你必须用Clone2 c = new Clone2();c.name;或是用匿名对象
new Clone2().name;(其实是子类的一个匿名对象)访问。

热心网友 时间:2023-11-02 07:54

难道你没发现你的子类跟父类不再同一个包中吗

热心网友 时间:2023-11-02 07:54

你确定你那里不可能运行吗,我帮你试了下,不报错,结果为clone1
如果是用protected修饰的话,它的子类或父类,只要有继承父系的都可以访问。。。

热心网友 时间:2023-11-02 07:55

public 公共变量 在整个程序运行过程中都管用,类外部也可以通过新建一个对象访问(new clone1().name)
private是私有变量的意思 只有类内可直接访问
protected是受保护变量 类内和子类直接访问。注意是类内可直接访问,新建的实例不能直接访问。即不能通过new clone1.name访问,但是可以通过new Clone2().name访问。

参考资料:http://zhidao.baidu.com/question/88298487.html?si=1

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com