java - 是否可以限制一个类的某些成员对另一个类的访问,但不能限制所有其他类的访问?

标签 java inheritance

例如我有A类、B类、C类 A类有5个实例变量。 B 类和 C 类都扩展了 A 类。 是否有可能 B 类可以访问所有成员而 C 类只能访问其中 2 个成员?前提是它们位于同一个包中。

最佳答案

这是有可能的。将 3 个字段设置为 private 并将 B 设为 Astatic 嵌套类。如果转换为 A,则 B 可以访问 A 的所有成员。像这样:

public class A {

    private int a = 1;
    private int b = 2;
    private int c = 3;
    int d = 4;
    int e = 5;

    public static void main(String[] args) {
        new B().test();
    }

    private static class B extends A {

        private void test() {
            System.out.println(((A) this).a);
        }
    }
} 

关于java - 是否可以限制一个类的某些成员对另一个类的访问,但不能限制所有其他类的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933290/

相关文章:

java - 外围 Java 线程方法的后台工作对调用线程的影响

inheritance - Backbone .js 模型继承

c++ - 改变继承类的级别

java - 设计模式处理具有许多成员的类(不是构建器)

C#:有什么理由不应该声明事件支持字段 protected ?

c++ - MFC::使用结构传递数据

java - Hibernate注解OnetoOne关系

java - SVN 错误 : svn: E200007: Runner for 'org.tmatesoft.svn.core.wc2.SvnMerge'

java - 从 POM 的构建路径中排除包

java - ProcessBuilder 执行自定义可执行文件