java - 有一个主要的抽象类?

标签 java

将 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 的要点:

abstract classes are abstract because they don't implement some methods in their body. having bar() implemented inside the main() method (even static) confuses users of your class. Good practice is to make two separate classes, one of them - abstract, another - with implementation and static method enclosed. Or dynamically find the enclosing class (see stackoverflow.com/questions/936684/…) using reflection.

换句话说,仅仅因为它可以完成,并不意味着它应该完成。

关于java - 有一个主要的抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501553/

相关文章:

java - 如何将 jar 提取到特定位置?

java - 参数匹配器的使用无效!预期 0 个匹配器,记录 1 个

java - 带有 Applet 和 JPanel 菜单的 JFrame

java - 带有聚合函数的 Hibernate 命名查询

java - Android 的 SOAP 1.1、SOAP 1.2、HTTP GET 和 HTTP POST 方法有什么区别?

java - f :convertDateTime support for Java8 LocalDate/LocalDateTime?

java - 如何在java 8中过滤Optional.empty

java - Spring Boot 客户端无法注册到 Admin

java - 解析 JSON 数据时不显示任何内容

java - 2D Tile 引擎(世界生成)- 初学者