To zadanie ma Ci pokazać po co są interfejsy. Słowo interface może być tutaj trochę mylące dlatego że, w dialekcie obiektowym oznacza ono zachowanie - budujemy zachowania klas a nie ich implementacje. Daje to tyle, że potem jest bardzo łatwo podmienić daną implementację bez dużych ingerencji w kod programu (główny kod, właściwie będzie nie zmieniany dzięki temu).
U Ciebie zachowaniem będzie Figura, która ma się (teoretycznie) narysować - nie ważne czy będzie to kwadrat, prostokąt, koło czy cokolwiek innego co można narysować.
Teraz nieco kodu (musisz sobie to doczytać bo szkoda przepisywać tutoriali, jak koduje się interfejsy w javie - https://javastart.pl/baza-wiedzy/darmowy-kurs-java/programowanie-obiektowe/interfejsy). Czyli Twoje zachowanie będzie takie:
interface Figura{
String typ();
}
Każda figura według zadania ma być jakiegoś typu i trzeba mieć do tego dostęp wiec metoda o nazwie typ wydaje mi się odpowiednia.
A implementacja tego zachowania przez jakąś konkretną figurę może wyglądać tak:
class Kwadrat implements Figura
{
@Override
public String typ()
{
return "Kwadrat";
}
}
Podobnie będzie jeśli będzie potrzebny prostokąt:
class Prostokat implements Figura
{
@Override
public String typ()
{
return "Prostokat";
}
}
I teraz wykorzystać to można tak:
public class Ekran
{
void rysujFigure(Figura figura)
{
System.out.println("rysuje: " + figura.typ());
}
public static void main(String[] args)
{
Ekran ekran = new Ekran();
ekran.rysujFigure(new Kwadrat());
ekran.rysujFigure(new Prostokat());
}
}
interface Figura {
String typ();
}
class Kwadrat implements Figura
{
@Override
public String typ()
{
return "Kwadrat";
}
}
class Prostokat implements Figura
{
@Override
public String typ()
{
return "Prostokat";
}
}
Zauważ, że metoda rysujFigure jest teraz bardzo elastyczna, bo można do niej przekazywać dowolny obiekt, który implementuje interfejs Figura.
Program powinien wydrukować:
rysuje: Kwadrat
rysuje: Prostokat