对象如何取消标记标记界面?

Nar*_*hai 0 java oop interface

class A implements Serializable{

}


class B extends A{
    //this also inherits the marker 

}
Run Code Online (Sandbox Code Playgroud)

那么有没有办法在课堂上实现/取消标记B

示例:如果有两个类扩展A名为BC.但是他们只C想要序列化而不是B.

Mar*_*nik 7

Java不仅缺少对此的支持:这样的功能将彻底打破其OOP基础.类型多态意味着可以在子类型上应用Liskov的替换原则:您的"特征"将使其不适用.

每个子类型都由它扩展的类型的约定紧密绑定:在每个地方,一个引用超类型,子类型的实例必须能够发生.因此,如果超类型是可序列的,我们不能允许任何子类型.

从不同的角度回答,如果您需要来自A非序列化类型的可序列化类型的功能B,那么将您的设计基于组合而不是继承:让我们B包含一个适当的实例A.