Nadpisywanie metody calculateArea w Shape

Dziedziczenie i polimorfizm - Podstawy Javy (Java)

Przeciążanie metod: Nie występuje w tym przykładzie (ale polega na definiowaniu metod o tej samej nazwie, ale z różnymi parametrami). Nadpisywanie metod: Klasy Rectangle i Circle nadpisują metodę calculateArea() z klasy bazowej Shape, aby zapewnić własną implementację dla prostokąta i koła. Adnotacja @Override: Informuje, że dana metoda jest nadpisywana z klasy bazowej, co pozwala kompilatorowi sprawdzić poprawność.

// Klasa bazowa
class Shape {
  // Metoda do obliczania pola - ogólna wersja
  public double calculateArea() {
    System.out.println("Nieokreślony kształt, brak wzoru na pole.");
    return 0;
  }
}

// Klasa pochodna
class Rectangle extends Shape {
  private double width;
  private double height;

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

  // Nadpisywanie metody calculateArea
  @Override
  public double calculateArea() {
    return width * height;
  }
}

// Klasa pochodna
class Circle extends Shape {
  private double radius;

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

  // Nadpisywanie metody calculateArea
  @Override
  public double calculateArea() {
    return Math.PI * radius * radius;
  }
}

// Klasa główna
public class Main {
  public static void main(String[] args) {
    // Tworzenie obiektów
    Shape shape = new Shape();
    Rectangle rectangle = new Rectangle(5, 10);
    Circle circle = new Circle(7);

    // Wywoływanie metod
    System.out.println("Pole kształtu: " + shape.calculateArea());
    System.out.println("Pole prostokąta: " + rectangle.calculateArea());
    System.out.println("Pole koła: " + circle.calculateArea());
  }
}

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Podstawy Javy · Zaloguj się, aby zapisać postęp na koncie.