3

我是Java编程新手,需要一些帮助。我有一个带有一个非抽象方法和一个抽象方法的抽象类。从抽象类(A类)中,我通过使用"this.getSize();"(我理解"this"是指调用该方法的对象类型。所以在这种情况下为-B)调用子类(B类)的方法,但我收到一条错误消息这在尝试编译 A 类时:

" Cannot find symbol - method getSize() "

我在想这可能是因为我从抽象方法中调用它,但我不确定。请帮忙..谢谢。

这是我的代码

abstract class A{

    public int size()
    {
        return this.getSize();
    }

    //abstract method
    abstract void grow(int f);
}


class B extends A{
    private int size = 1; //default set of size

    public int getSize(){ return size; }

    public void grow(int factor)
    {
        size = size * factor;
    }
}
4

2 回答 2

4

超类不能引用实现类的方法。您需要声明getSize为抽象方法。

一类

abstract class A {

    public int size() {
        return this.getSize();
    }

    abstract public int getSize();

    // abstract method
    abstract void grow(int f);

}

B类

class B extends A {
    private int size = 1; // default set of size

    public int getSize() {
        return size;
    }

    public void grow(int factor) {
        size = size * factor;
    }

    public static void main(String[] args) {
        B b = new B();
        System.out.println(b.getSize()); //Prints 1
    }
}
于 2013-03-15T23:19:36.250 回答
1

您没有getSize()A. 我想你的意思是abstractA.

public abstract int getSize();

然后你可以调用该方法。

于 2013-03-15T23:20:32.913 回答