Klasy abstrakcyjne w Java

Klasy abstrakcyjne są kluczowym elementem programowania obiektowego w Java. Nie można utworzyć instancji klasy abstrakcyjnej bezpośrednio, ale służą one jako szablony dla klas pochodnych. Klasy abstrakcyjne mogą zawierać metody abstrakcyjne (bez implementacji) oraz metody z implementacją. Metody abstrakcyjne muszą być zaimplementowane przez klasy dziedziczące. Klasy abstrakcyjne są wykorzystywane do definiowania wspólnych cech i funkcjonalności dla grupy powiązanych klas.

Przykład użycia klasy abstrakcyjnej

W tym przykładzie zdefiniujemy klasę abstrakcyjną Shape, która będzie reprezentować ogólną ideę kształtu, oraz kilka konkretnych klas kształtów, takich jak Circle i Rectangle, które dziedziczą po Shape.

Klasa abstrakcyjna Shape
// Definicja klasy abstrakcyjnej Shape
public abstract class Shape {
    // Metoda abstrakcyjna do obliczania pola
    public abstract double area();

    // Metoda abstrakcyjna do obliczania obwodu
    public abstract double perimeter();
}
Klasa Circle
// Klasa Circle dziedzicząca po Shape
public class Circle extends Shape {
    private double radius;

    // Konstruktor klasy Circle
    public Circle(double radius) {
        this.radius = radius;
    }

    // Implementacja metody area dla koła
    @Override
    public double area() {
        return Math.PI * radius * radius;
    }

    // Implementacja metody perimeter dla koła
    @Override
    public double perimeter() {
        return 2 * Math.PI * radius;
    }
}
Klasa Rectangle
// Klasa Rectangle dziedzicząca po Shape
public class Rectangle extends Shape {
    private double width;
    private double height;

    // Konstruktor klasy Rectangle
    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    // Implementacja metody area dla prostokąta
    @Override
    public double area() {
        return width * height;
    }

    // Implementacja metody perimeter dla prostokąta
    @Override
    public double perimeter() {
        return 2 * (width + height);
    }
}

Użycie klas

// Główna klasa do demonstracji użycia kształtów
public class ShapeDemo {
    public static void main(String[] args) {
        Shape circle = new Circle(5);
        Shape rectangle = new Rectangle(4, 5);

        System.out.println("Pole koła: " + circle.area());
        System.out.println("Obwód koła: " + circle.perimeter());
        System.out.println("Pole prostokąta: " + rectangle.area());
        System.out.println("Obwód prostokąta: " + rectangle.perimeter());
    }
}

Podsumowanie

Klasy abstrakcyjne w Java umożliwiają tworzenie hierarchii klas, w których niektóre funkcjonalności są zdefiniowane na poziomie bazowym, ale ich konkretna implementacja jest pozostawiona klasom pochodnym. Użycie klas abstrakcyjnych pozwala na zwiększenie modularności i ponownego wykorzystania kodu, jednocześnie wymuszając na klasach dziedziczących implementację określonych metod. W naszym przykładzie, klasa abstrakcyjna Shape definiuje ogólny szablon dla kształtów, a konkretne klasy jak Circle i Rectangle implementują te szablony, dostarczając szczegółowe obliczenia dla różnych typów kształtów.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top