一个类是否有可能只能由其对象调用并为子类对象隐藏的方法?例如:

class ClassOne {
    ... // attributes

    public void doSomething() { ... }
}

class ClassTwo extends ClassOne {
    ... // attributes and methods
}

ClassOne c1 = new ClassOne();
c1.doSomething(); // ok to call

ClassTwo c2 = new ClassTwo();
c2.doSomething(); // forbidden


我知道这在继承问题上似乎很奇怪,但是可能吗?

PS:这个问题的目的只是为了了解有关OO编程继承的更多信息。

最佳答案

您不可能这样做会破坏继承。想一想

ClassOne c2 = new ClassTwo();
c2.doSomething(); // what to do?


这必须起作用,因为ClassTwo is a ClassOne。编辑:如果该方法被覆盖并且至少要进行其他操作,则至少必须编译。但是您不能使编译器对此产生错误。

10-08 12:19