【问题标题】:range of protected method "subclass" means受保护方法“子类”的范围意味着
【发布时间】:2023-01-27 15:26:59
【问题描述】:

假设“class A2”和 p“public class A”在 A.java 文件中, B 类与 A.java 位于不同的包中。

这是B级

public class B {
protected void protectedMethod() {
     }
}

下面是 A.java 文件

class A2 extends B {
void tFunc() {
    protectedMethod();
}


public class A extends A2 {
void tFunc1() {
    protectedMethod(); // OK
    A2 a2 = new A2();
    a2.protectedMethod(); // Compile Error

为什么 a2.protected Method() 不能编译??

我理解protected如果是继承关系是可以调用的, 但是为什么A继承A2,A2继承B会出现编译错误呢?

【问题讨论】:

    标签: java class overriding


    【解决方案1】:

    受保护的方法可以通过编写在上下文 A 类中使用

    super.protectedMethod()
    

    在 A 类中创建 A2 的新实例违反了不能从不同包访问受保护方法的规则。

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 2011-02-08
      • 2012-09-10
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 2010-10-01
      • 2013-05-17
      相关资源
      最近更新 更多