这个抽象java类有什么问题

这个抽象java类有什么问题,java,abstract,Java,Abstract,为什么要将“公共类AbstractDemo”改为“类AbstractDemo” abstract class A { public abstract int b(); public void d() { System.out.println("public void d()"); } } class B extends A { public int b() { return 1; } } publ

为什么要将“公共类AbstractDemo”改为“类AbstractDemo”

abstract class A {
    public abstract int b();
    public void d() {
        System.out.println("public void d()");
    }
}
class B extends A {
    public int b() {
        return 1;
    }
}
    public class AbstractDemo {
        public static void main(String[] args) {
//            A obj = new A();
            B obj = new B();
        }
    }

这不是抽象类的问题

您需要清除java中access修饰符的概念

  • 在java文件中,java文件中一次只能有一个类是公共的,并且它的名称必须是java文件的名称。否则,如果要在java文件中使用不同的名称编写
    public
    AbstractDemo类,则会出现以下错误:

谁让你这么做?你有错误吗?有根据的猜测:Java编译器只允许每个文件有一个公共类,并且它的名称必须与文件名匹配。因此,将其设置为非公共类或更改文件名。但是请注意,为了运行它,您必须将带有main方法的类设置为公共类。“AbstractAnywhere”可能是错误的选择,因为它不是Java意义上的抽象类。
The public type AbstractDemo must be defined in its own file