【发布时间】:2026-01-27 01:50:01
【问题描述】:
可以有一个抽象类实现它的所有方法——其中没有抽象方法。
例如:
public abstract class someClass {
int a;
public someClass (int a) { this.a = a; }
public void m1 () { /* do something */ }
private void m2 () { /* do something else */ }
}
如果有的话,拥有这样一个抽象类与拥有相同类作为具体类相比有什么优势?
我能想到的是,当我将它声明为抽象时,它不会被实例化。 但是,我可以通过将其具体化并将其构造函数设为私有来获得相同的效果。
TIA。
//===================
编辑:我能想到的另一种用途:
它可能正在扩展另一个抽象类或实现一个接口而不实现该类的抽象方法——尽管它正在实现它自己的所有方法。不惜一切代价。
【问题讨论】:
-
您可能希望提供任何人实例化此类。
-
如果你将构造函数设为私有,那么你将把它变成一个单例,或者需要一个公共静态方法来获取类的实例,其中抽象类可以帮助你继承......
-
使所有构造函数
protected(注意默认的)具有非常相似的效果,实际上是我首选的这样做方式。也许这是 OP 中的一个错字。
标签: java inheritance abstract-class