添加方法时java中的错误

Mad*_*anu 1 java

我读过你可以为对象添加额外的方法,或者以这种方式覆盖抽象方法,但是我有一个错误.你能告诉我这是否可能或我做错了什么?

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.

Era*_*ran 6

你正在做的是创建一个匿名的子类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)