【问题标题】:can we modify private variables in child class [duplicate]我们可以修改子类中的私有变量吗?
【发布时间】:2018-09-01 06:38:33
【问题描述】:

我们可以通过子类修改一个私有变量吗?
我们可以通过 set 和 get 方法使用它,但我们如何在子类中修改它们。

【问题讨论】:

  • 它是私有的,因此你不能直接访问它
  • 你的set方法是做什么的?不是设置字段的值吗?
  • 我想通过子类修改值
  • setter getter 方法在父类中表现良好
  • 调用set是在修改变量吧?

标签: java


【解决方案1】:

您没有通过子类直接访问父类private 成员的权限。您可以在父类中使用protected 或public 访问修饰符指定getters 和setters,并通过调用适当的方法更改或读取父类的private 成员的值方法 - getter 或 setter。

如何实现该目标的示例:

class Parent {
    private int member;
    public void setMember(int member) { // setter
        this.member = member;
    }
    public int getMember() { // getter
        return member;
    }
}

class Child extends Parent {}

public class TestClass {

    public static void main(String[] args) throws IOException {
        Child child = new Child();
        System.out.println("member = " + child.getMember());
        child.setMember(5);
        System.out.println("member = " + child.getMember());
    }
}

你得到的输出:

member = 0
member = 5

【讨论】:

    【解决方案2】:

    不,你不能修改超类中的私有变量,除非你使用反射。

    访问它们的唯一方法是 getter 和 setter。

    【讨论】:

      【解决方案3】:

      **没有办法从其他类更改私有。 同班可以换

      **

      class Parent {
      

      私人价值;

      公共类方法{ System.out.println(value++);

      }

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 2011-07-10
        • 2013-10-13
        • 2012-01-23
        • 2016-06-08
        • 1970-01-01
        相关资源
        最近更新 更多