java – 是否存在Abstract类优于Interface的情况 我有一个场景,其中有几个子类有类似的实现和一些额外的方法,实现与每个子类不同.我假设抽象类对于这种情况是一个不错的选择.但是如果抽象类实现包含所有方法声明的接口会更好.或者我应该坚持使用抽象类.简而言之,我想知道我应该在层次结构顶部而不是接口上更喜欢抽象类的场景.解决方法如果您的子类与抽象类具有is-a关系,请使用抽象类.您可以同时拥有抽象类和接口–指定实现的抽象类,以及指定API的接口.集合框架
java – 抽象类或接口中的public static final字段 我有很多抽象类的子类,每个子类声明一个具有相同名称的公共静态final字段.我想在抽象超类中使用这个字段而不初始化它,并希望每个子类都被强制初始化它.我正在考虑这个问题,因为抽象类的所有子类都声明了一个名为UNIQUE_ID的公共静态最终字符串字段,并且每个子类都必须声明具有该名称的字段.我希望我的问题很清楚,如果不是,请告诉我.可以或多或少地与此相提并论吗?
Java – 抽象类和子类的二进制兼容性 在Java中,我定义了一个抽象类,其中包含具体和抽象方法,并且必须由第三方开发人员独立创建子类.只是为了确定:我是否可以对抽象类进行任何更改,这些更改与源类兼容,但不兼容二进制?
java – Outputstream是一个抽象类,所以我们不能实例化它.为什么为Outputstream类提供一个默认构造函数? 或者更好的是,JLS可以使得公共抽象类默认构造函数被隐式保护.但是,它不会对公众产生任何伤害.
java – 从抽象类派生时如何服从equals()的合约 约书亚·布洛赫在他的书“有效Java”中写道,当派生类向检查添加附加字段时,关于equals()的合同发生的陷阱.通常这样会破坏对称性,但Bloch指出“你可以在一个抽象类的子类中添加一个值组件而不会违反equals约定”.显然,这是真的,因为没有抽象类的实例,所以没有违反的对称性.但是其他子类呢?
Java中的抽象类不需要从其实现接口中实现任何方法.为什么? 我们来看看下面的Java代码片段.由于接口Sum只包含一个方法showSum();正在由抽象类Super实现,应该有必要对抽象类Super来实现该方法showSum();.编译器根本就没有抱怨,程序运行良好,根本没有问题.为什么?类似地,非抽象最终类Calculate正在实现Mul接口,并包含方法showMul()的实际实现;在其实现界面中呈现.在这种情况下,如果该方法在类Calculate中显示Mul(),则会发出编译时错误.为什么同样的事情不适用于那个抽象类Super?