klasy abstrakcyjne implementacja interfejsu

0

Witam serdecznie
Na zadanie na uczelnie mam wykonać "projekt", ktory ma za zadanie nauczyć mnie impementacji interfejsu.
Niestety przykład podany w materiałach wykładowych niezbyt pomógł więc proszę o pomoc.
Po kolei

  1. Najpierw należy zdefiniować interfejs FiguraI z metodami: oblicz pole, oblicz obwod, wyświetl pole, wyswietl obwod
    '''
    package lab3;

public interface FiguraI {

double oblicz_pole  ();
double oblicz_obwod  ();
void wyswietl_pole ();
void wyswietl_obwod ();

} 

'''
2. jako kolejny krok stworzyc klase abstrakcyjną FiguraA, ma zawierać pole nazwa, konstruktor z parametrem String ustawiający nazwę figury, konstruktor bez parametrów - ustawia nazwę figury na "Figura", metodę wyswietl_nazwe()
'''
package lab3;

abstract class FiguraA {
String nazwa;
public FiguraA() {
nazwa="Figura";
}

public FiguraA(String n) {
    nazwa=n;
}

public void wyswietl (){
    System.out.print("\n"+nazwa);
}

}
'''
3. Kolejnym elementem jest jest utworzenie klasy konkretnej KoloA która dziedziczy po abstrakcyjnej FiguraA i implementuje FiguraI
'''

class KoloA extends FiguraA implements FiguraI{
protected double r=1,P=1,O=1;

public KoloA() {
}

public KoloA(String n) {
    super(n);
}

public double oblicz_pole(double r) {
P=Math.PI*r*r;
return P;
}
public double oblicz_obwod(double r) {
 O=Math.PI*r*2;
return O;
}

public void wyswietl_pole(double P) {
  System.out.print("\n Pole wynosi = "+P); 
}

public void wyswietl_obwod(double O) {
    System.out.print("\n Obwod wynosi = "+O); 
}
}

'''
I tutaj pojawiają się schody kompilator podpowiada, * KoloA is not abstract and does not override abstract method wyswietl_obwod() in FiguraI
class KoloA extends FiguraA implements FiguraI* natomiast jesli klase KoloA utworze jako abstrakcyjną to oczywiście nie moge utworzyć obiektu .
Jak można ten problem rozwiązać?

3

Metody w interfejsie są bezparametrowe, a te które masz KoloA mają parametr typu double. To są zupełnie inne metody, więc z nie implementujesz ich. Polecam do metod które chcesz przeciążyć lub zaimplementować dodać adnotację @Override, która przypilnuje Ci czy na pewno istnieje taka metoda w klasie bazowej lub interfejsie.

0

Bardzo dziękuj, pomogło pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1