关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
上个月关门了。
改进这个问题
我想问是否有可能父类的私有对象可以通过super关键字被子类继承。
我问是因为我有一个学校的任务,我认为私人物品是不能继承的。我也收到了一个错误,在我的代码,我努力找到任何在线帮助我这一点。
例如,我的父类有:
public class Person {
private String firstName;
在我的小班里我有:
public class Lecturer extends Person {
//....
super.firstName = firstName;
netbeans警告我“firstname有私有访问权”。
2条答案
按热度按时间nwsw7zdq1#
简而言之:不,它们不能被继承。
只能从声明类的任何位置访问私有变量。这意味着你的
super.firstName = firstName
实际上有两个错误:super.firstname是私有的,因此无法访问,并且从子类的Angular 来看firstname字段不存在。直接访问私有变量或方法的唯一方法是通过反射,即使这样,您也必须使用setaccessible(boolean)方法,这可能会被securitymanagers阻止。
如果有访问私有变量的setter(或参数化构造函数),则可以从其他类使用它(由于方法是公共的)。
waxmsbnn2#
你必须这样做
人员类别:
单独文件中的子类:
如果不想使用super.method(),而是super.variable,则需要将name变量更改为private,而不是package private,方法是从其声明中删除“private”:
雇员
我之前的回答使用了一个内部类,但这不应该被使用,因为这是对内部类的误用。