[英]Abstract class having a main?
将抽象类的主要用作一般的坏习惯还是允许的,因为抽象类的性质能够有一个体?
当然,抽象类可以有一个main方法,就像任何类都可以有一个main一样,实际上它是测试抽象类的一种方法 - 如果你在main方法中创建它的具体实现。 对抽象类唯一不能做的就是按原样构造它们,而不是扩展它们并实现所有抽象方法。
public abstract class Foo {
public abstract void bar();
public static void main(String[] args) {
// anonymous inner class representation
Foo foo = new Foo() {
// must implement all abstract methods
public void bar() {
System.out.println("bar");
}
};
foo.bar();
}
}
编辑:VitalyGreck的好点:
抽象类是抽象的,因为它们没有在它们的体内实现某些方法。 在main()方法中实现bar()(甚至是静态)会使您的类的用户感到困惑。 好的做法是创建两个单独的类,其中一个是抽象的,另一个是 - 包含实现和静态方法。 或者使用反射动态查找封闭类(请参阅stackoverflow.com/questions/936684 / ... )。
换句话说 - 仅仅因为它可以完成,并不意味着它应该完成。
你的抽象类中没有主题的问题。
静态方法不会覆盖,任何子类也可以具有相同的静态方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.