繁体   English   中英

有主要的抽象类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM