我读过你可以为对象添加额外的方法,或者以这种方式覆盖抽象方法,但是我有一个错误.你能告诉我这是否可能或我做错了什么?
public abstract class Pesti {
public abstract void ud();
}
public class EX2 {
public static void main(String[] args) {
Pesti p = new Pesti() {
public void ud() {
System.out.println("Pestele este ud!");
}
public void inn() {
System.out.println("Innoata!");
}
};
p.ud();
p.inn();
}
}
Run Code Online (Sandbox Code Playgroud)
它告诉我它找不到方法inn.
你正在做的是创建一个匿名的子类Pesti.但是,由于您的p变量是类型Pesti,因此您只能调用在Pesti类(或其任何超类)中声明的方法.因此你可以打电话ud(),但不是inn().
如果你可以p转换为子类的类型,你可以调用 inn(),但由于这是一个匿名的子类实例,你不能转换为该类型.
您可以将其声明inn()为抽象(或具体)方法Pesti.然后您的代码将通过编译,并将执行此方法在匿名子类实例中的实现.
public abstract class Pesti {
public abstract void ud();
public abstract void inn();
}
Run Code Online (Sandbox Code Playgroud)