/ / Klasa abstrakcyjna Java - nie można znaleźć symbolu - metoda BŁĄD - java, metody, błędy kompilatora, klasa abstrakcyjna, streszczenie

Klasa abstrakcyjna Java - nie można znaleźć symbolu - metoda ERROR - java, metody, błędy kompilatora, klasa abstrakcyjna, abstrakt

Jestem nowicjuszem Java programowanie i potrzebuję pomocy. Mam klasę abstrakcyjną z jedną metodą nieabstrakcyjną i jedną metodą abstrakcyjną. Z klasy abstrakcyjnej (klasa A) wywołuję metodę podklasy (klasa B) za pomocą "this.getSize();" (Rozumiem "this" oznacza typ obiektu, który wywołuje metodę. Więc w tym przypadku -B), ale pojawia się błąd, mówiąc to podczas próby kompilacji klasy A:

" Cannot find symbol - method getSize() "

Myślę, że może wynika to z faktu, że nazywam to metodą abstrakcyjną, ale nie jestem pewien. Proszę o pomoc .. Dzięki.

Oto mój KOD:

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

Odpowiedzi:

4 dla odpowiedzi № 1

Superklasa nie może odwoływać się do metod z klasy implementującej. Musisz zadeklarować getSize jako metoda abstrakcyjna.

Klasa

abstract class A {

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

abstract public int getSize();

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

}

B. klasa

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 dla odpowiedzi nr 2

Nie zadeklarowałeś żadnego getSize() metoda w A. Myślę, że masz zamiar to zadeklarować abstract w A.

public abstract int getSize();

Następnie możesz wywołać metodę.