Java 孙子对象不允许调用 parent 或祖 parent 的方法

标签 java inheritance polymorphism

我有一个 Java 类 A 并且 A 有一些 protected 方法,然后我有一个 B extends 来自 A 以便 B 可以覆盖那些 protected 方法。然后我希望能够拥有一个 Cextends from class B 但类 C 不应该能够调用 A 的 protected 方法。有没有办法在 Java 中做到这一点?我是否只是让父类的方法被重写并让它们最终化?即

public class A()
{
     protected void somemethod();
     protected int somevariable;
}

public class B() extends A
{
    @Override
    final protected void somemethod();
        //How do I make some variable final or not accessible to my children?
    }

    public class C() extends B
    {
        //Now I cannot override somemethod! Is that right?
    }
}

最佳答案

不,您不能阻止子类调用父类的protected 方法。为此,您必须降低方法的可见性,这是​​不允许的。在您的类 B 中制作方法 final 仅意味着它不能在任何子类中被覆盖。

您希望禁止调用子类的 protected 方法这一事实对我来说似乎是一个设计问题。你可能想回顾一下你的整个类层次结构,也许更好地隔离你的类的责任,这样你就不会陷入必须阻止通常允许的情况(调用 protected 方法) ).

关于Java 孙子对象不允许调用 parent 或祖 parent 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920852/

相关文章:

java - Hibernate 数据源与 JNDI 的连接

java - 将 JSON 列表转换为 POJO

java抽象类构造函数不会按预期工作

c++ - 访问基类函数

c++ - C++继承和相同的函数名称

java - 如何在 Google map 上绘制距用户输入点已定义距离(米)的多边形(矩形)

java - Gradle子项目无法访问自己的资源

java - 继承java

ios - 游戏类的 Objective C 多态性

c# - 将对象转换为其他对象的类型