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();
}
}