Z interfejsu można robić tablicę, w którą można wpisać kolejne instancje klas

Dzisiaj nie lada odkrycie dla mnie.

Niesamowite, że można z interfejsów robić nie tylko tablicę, ale i w kolejnych indeksach umieszczać instancje poszczególnych klas implementujących ten interfejs. Coś niesamowitego. mógłbym to różnie opisywać, ale najlepiej niech każdy sam zobaczy:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Figure[] figures = new Figure[3];

        Scanner scanner = new Scanner(System.in);
        System.out.println("Podaj promień");
        figures[0] = new Circle(scanner.nextDouble());

        System.out.println("Podaj 2 boki trójkąta");
        figures[1] = new Triangle(scanner.nextDouble(), scanner.nextDouble());

        System.out.println("Podaj 2 boki prostokąta");
        figures[2] = new Rectangle(scanner.nextDouble(), scanner.nextDouble());

        for (Figure figure : figures) {
            System.out.println(figure.getType());
            System.out.println("pole " + figure.getArea());
            System.out.println("obwód " + figure.getPerimeter());
        }
    }
}


mój słowny opis tego co się tutaj wydarzyło to:

Tworzę nowy obiekt z interfejsu Figure, który jest tablicą.

// Ciekawe, że tak się w ogóle da, prawda? Wcześniej wydawało mi się, że interfejsy to takie "uzupełnienia klas", a tu wychodzi na to, że to mogą być główne obiekty, których kolejne części tworzą oddzielne klasy.

Długość tej tablicy to 3.

Potem tworzę Scanner, to oczywiste.

Po czym w kolejnych indeksach tablicy Figures wpisuję instancję klas implementujących interfejs Figure, a w konstruktorach tych instancji podaję parametry potrzebne do obliczeń zadanych w klasie.

na końcu iteruję po każdym indeksie tablicy i dla każdego wywołuję w konsoli metodę obliczania pola i obwodu, podając przy tym jaka to klasa.



Jestem w szoku. Jeszcze to przetwarzam, że tak się da, więc mój opis może nie być doskonały, ale jest podekscytowany tym, bo podoba mi się to jak wyszło. Jakby ktoś chciał zobaczyć całe zadanie i resztę klas, to udostępniam je na swoim GitHubie.



To tyle ode mnie na dziś, będę wdzięczny, jeśli teraz Ty podzielisz się ze mną, swoim dzisiejszym odkryciem  np. w komentarzu :)

Komentarze

Popularne posty z tego bloga

IntelliJ: zmiana rozmiaru czcionki scrollem

ThunderBird: jak zrobić professional stopkę