class Parent{
private int a = 10;
public int getA() {
return a;
}
}
class Child extends Parent{
public int b = 20;
public void getSuperA() {
System.out.print(getA()); // getA() instead of a
}
}
当我们创建一个子类对象时,只会创建一个对象.该对象中的成员是什么?家长的私人领域会怎样?
解决方法:
实例化子类的对象时.
>初始化父级和子级的所有字段,而与访问修饰符(私有,受保护或公共)无关
>父类的构造函数被调用.
>子类的构造函数被调用.
因此,这些字段将存在(它们将存储一个值),但是如果它们是私有的,则您将无法访问它们.
返回私有字段的public方法将授予您该访问权限.简而言之,它将起作用.
希望这可以帮助.
编辑(针对评论):
该机制内置在安全性语言中.访问修饰符提供该机制所需的信息.
>只能从班级内部访问私有字段.
>它会存在,但从外部看不到.
>通过它对该类某些公共方法(使用它的人)的行为的影响,您可以感觉到它的存在.由于这些方法是同一类的成员,因此它们可以访问私有字段.
好处:
>您可以从外部隐藏实施细节.
>您可以通过方法限制字段的不当使用.
例
private int salary;
public void setSalary(int newSalary) {
if (newSalary < MAX_SALARY) {
this.salary = newSalary;
} else {
this.salary = MAX_SALARY;
}
}
标签:inheritance,private,java
来源: https://codeday.me/bug/20191121/2055755.html