gpt4 book ai didi

java - 父类中的私有(private)字段 - java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:46 25 4
gpt4 key购买 nike

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
}
}

当我们创建子类对象时,只会创建一个对象。该对象中的成员是什么? Parent 中的私有(private)字段会发生什么情况?

最佳答案

当你实例化一个子类的对象时。

  • 无论访问修饰符是什么(private、protected 或 public),父类和子类的所有字段都被初始化
  • 调用父类的构造函数。
  • 调用子类的构造函数。

因此这些字段将存在(并且它们将存储一个值),但如果它们是私有(private)的,您将无法访问它们。

返回私有(private)字段的公共(public)方法将授予您该访问权限。简而言之,它会起作用。

希望这对您有所帮助。


编辑(回应评论):

该机制内置于安全语言中。访问修饰符提供该机制所需的信息。

  • 私有(private)字段只能从类的内部访问。
  • 它将存在但从外部不会可见
  • 您可以通过它对该类的某些公共(public)方法(使用它的方法)的行为的影响来感知它的存在。由于这些方法是同一类的成员,因此它们可以访问私有(private)字段。

好处:

  • 您可以对外部隐藏实现细节。
  • 您可以通过方法限制字段的不当使用。

例子

private int salary;

public void setSalary(int newSalary) {
if (newSalary < MAX_SALARY) {
this.salary = newSalary;
} else {
this.salary = MAX_SALARY;
}
}

关于java - 父类中的私有(private)字段 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com