java中的受限继承

4 java inheritance multiple-inheritance

我知道

class A  { } 
class B extends A  { }  
class C extends B { }
Run Code Online (Sandbox Code Playgroud)

是完全合法的,我可以

C obj = new C();
obj.anyMethodfromA();
Run Code Online (Sandbox Code Playgroud)

是可能的.现在问题是这样如果我不想在C 类中访问A类方法,那么只应该继承B类方法.这可能吗?

C anotherObj = new C();
anotherObj.anyMethodfromA(); //can be illegal?
anotherObj.anyMethodfromB(); //should be legal.
Run Code Online (Sandbox Code Playgroud)

raj*_*uGT 6

您无法删除classA方法classC,您可以做的就是覆盖classC中的classA方法并抛出UnsupportedOperationException.喜欢

class C extends B { 

    @override
    public void someMethodWasInClassA() {
        throw new UnsupportedOperationException("Meaningful message");
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 你为什么要这样?对不起,但你有C是-A A.如果不是这样,那就不要这样做了. (3认同)