2013-03-15 54 views
3

我是Java编程的新手,需要一些帮助。我有一个抽象类,有一个非抽象方法和一个抽象方法。从抽象类(A类)我使用"this.getSize();"(我明白"this"意味着调用该方法的对象类型,所以在这种情况下-B),但我得到一个子类(B类)的方法试图编译的A类错误时,这样说:Java抽象类 - 无法找到符号 - 方法错误

" 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

超类无法实现类的参考方法。您需要声明getSize作为抽象方法。

的A.class

abstract class A { 

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

    abstract public int getSize(); 

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

} 

B.class

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 
    } 
} 
1

你没有在A声明任何getSize()方法。我想你的意思是在A中声明abstract

public abstract int getSize(); 

然后你可以调用该方法。

相关问题