Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java运行时多态性超类引用中的抽象类_Java_Abstract Class_Extends - Fatal编程技术网

java运行时多态性超类引用中的抽象类

java运行时多态性超类引用中的抽象类,java,abstract-class,extends,Java,Abstract Class,Extends,我在运行以下代码时出错 abstract class A { abstract void callMe(); void callMeToo() { System.out.println("this is concrete method"); } } class B extends A { void callMe() { System.out.println("B's implementation of callme");

我在运行以下代码时出错

abstract class A {
    abstract void callMe();

    void callMeToo() {
        System.out.println("this is concrete method");
    }

}

class B extends A {
    void callMe() {
        System.out.println("B's implementation of callme");
    }
}

class AbstractDemo {
    public static void main(String args[]) {

        B b = new B();
        b.callMe();
        b.callMeToo();

    }
}
我收到如下错误消息:

运行: 线程“main”java.lang.RuntimeException中的异常:不可编译的源代码-错误的树类型:B 位于abstractdemo.main(abstractdemo.java:28) C:\Users\JARVIS\AppData\Local\NetBeans\Cache\10.0\executor snippets\run.xml:111:执行此行时发生以下错误: C:\Users\JARVIS\AppData\Local\NetBeans\Cache\10.0\executor snippets\run.xml:68:Java返回:1 生成失败(总时间:0秒)


这对我来说编译和运行都很好。你是如何运行它的?如果你不把b变成A型,多态性是没有用的。如果将其设为B,则实际上与没有对象A的情况相同。使用IDE时,代码编译和运行良好。我猜您正在使用命令提示符运行此代码,而上面的源代码位于不同的
.java
文件中。如果是这种情况,请先使用
类A
编译文件,然后使用
类B
编译文件,然后使用
类abstractdemo
代码运行良好,@AshishKumar说得对,请提供有关异常的更多信息。请遵循Java标准,在第9行[B=new B()]中为类名和方法名命名约定:非静态变量无法从静态上下文引用此变量已将类更改为静态
public class AbstractDemo {
        abstract static class A { 
        public abstract void callMe(); 
        public void callMeToo() { }
      } 
      public static class B extends A { 
          public void callMe() { } 
      }
      public static void main(String args[]) {

        B b = new B();
        b.callMe();
        b.callMeToo();

     }
}