gpt4 book ai didi

java - 将父类成员仅限于其直接子类

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:39 26 4
gpt4 key购买 nike

假设我在 java 中有四个具有给定层次结构的类。

class A {}
class B extends A {}
class C extends B {}
class D extends C {}

据我了解,A 类的所有可访问字段都将通过继承可供其所有子类使用。现在,如果我希望 A 类的几个字段仅对 B 类可用怎么办。

在 java 中有什么方法可以限制父类的某些字段只能用于它的直接子类吗?

最佳答案

并不是说我会在生产中做这样的事情,但是给你:

class A {
private int a = 1;

public int getA() {
if (getClass().equals(A.class) ||
getClass().getSuperclass().equals(A.class)) {
return a;
} else {
throw new UnsupportedOperationException("hahaha");
}
}

public static void main(String[] args) {
A a = new A();
B b = new B();
C c = new C();
System.out.println(a.getA());
System.out.println(b.getA());
System.out.println(c.getA());
}
}

class B extends A {}

class C extends B {}

所以基本上你可以使用这个技巧只允许你想要的类(使用黑名单或白名单方法)调用 getA()

输出:

1
1
Exception in thread "main" java.lang.IllegalStateException: hahaha
...

关于java - 将父类成员仅限于其直接子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47447679/

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