我是Java
编程的新手,需要一些帮助。我有一个抽象类,一个非抽象方法和一个抽象方法。从抽象类(类A)我使用"this.getSize();"
调用子类(类B)的方法(我理解"this"
表示调用该方法的对象类型。所以在这种情况下-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;
}
}
答案 0 :(得分: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 :(得分:1)
您未在getSize()
中声明任何A
方法。我认为您的意思是在abstract
中声明A
。
public abstract int getSize();
然后你可以调用方法。