gpt4 book ai didi

java - 第三方类扩展难

转载 作者:行者123 更新时间:2023-11-29 08:18:43 25 4
gpt4 key购买 nike

我有以下类(class)

         class A{
private String name;
private int value;

public A(String n, int v){
name = n;
value = v;
}

public void print(){
System.out.println(name + " " + value);
}
}



class B extends A{
public B(String n, int v){
super(n,v);
}
}

当我说 B b = new B("new object", 1);

它创建了一个 B 类型的对象,名称 = 新对象,值 = 1。并在调用 print() 方法时打印相同的对象。但是,尽管它具有这些值,但我无法通过 B 的方法访问它们。是封装的限制还是继承的限制。

因为同样的情况出现在我面前,我需要扩展一个第三方类和这个类中的属性,这些属性是私有(private)的,但在扩展类中需要,并且私有(private)成员没有 setter 和 getter .那我该怎么办?

最佳答案

如果变量是private,那么它们就应该如此——类的设计者已经决定不需要它们。

但是,那个类的设计者可能错了。首先假设这不是一件好事,但如果您真的需要它们,您可以调用:

Field field = getClass().getSuperclass().getDeclaredField("privateFieldName");
field.setAccessible(true);
Object value = field.get(this);

关于java - 第三方类扩展难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274938/

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