【问题标题】:Java Access Modifiers - Public function/variable in protected classJava 访问修饰符 - 受保护类中的公共函数/变量
【发布时间】:2016-05-25 09:20:19
【问题描述】:

早安,

如果我有类似这样的课程:

public class A {
        protected class B {
                public int element;
                public int get() {
                        return i;
        }
}
public class C {
        foo();
}
public class D extends A {
        foo();
}

1.C类中的foo()能否访问元素和get()?还是只有 D 级才能访问它们?

  1. 如果 B 类是私有的,C 可以访问 element 和 get() 吗?

【问题讨论】:

  • 首先,代码无法编译。所以无法回答。
  • 如果代码正在编译,你为什么不自己尝试一下呢?
  • 不,C 无法访问 elementgetD 可以。如果B 是私有的,除了B 之外的任何类都不能访问成员。这是一个很好的表格供将来参考:stackoverflow.com/a/33627846/276052

标签: java class access-modifiers


【解决方案1】:

只有D,B类被保护,C不能访问B类。

但是,您必须在 D 中实例化 B 才能调用 get() 并获取 i,因为 get 是一个实例方法。

如果 B 是私有的,那么 C 和 D 都不能访问 B。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 2011-05-14
    • 2013-03-05
    • 2015-09-26
    • 2019-05-07
    相关资源
    最近更新 更多