Hermetyzacja: klasa Car z getterami i setterami

Klasy i obiekty - Podstawy Javy (Java)

Klasa Car stosuje hermetyzację, gdzie pola make, model i year są prywatne. Dostęp do pól odbywa się za pomocą getterów i setterów. Konstruktor inicjalizuje wszystkie pola i weryfikuje poprawność roku. Metoda displayInfo() wyświetla informacje o samochodzie w formacie czytelnym dla użytkownika. W metodzie main zademonstrowano zarówno poprawne, jak i niepoprawne przypadki użycia setterów.

public class Car {
  // Prywatne pola
  private String make;
  private String model;
  private int year;

  // Konstruktor
  public Car(String make, String model, int year) {
    this.make = make;
    this.model = model;
    if (year > 1885) { // Pierwszy samochód wynaleziono w 1886 roku
      this.year = year;
    } else {
      System.out.println("Podano niepoprawny rok. Ustawiono rok 1886.");
      this.year = 1886;
    }
  }

  // Gettery
  public String getMake() {
    return make;
  }

  public String getModel() {
    return model;
  }

  public int getYear() {
    return year;
  }

  // Settery
  public void setMake(String make) {
    this.make = make;
  }

  public void setModel(String model) {
    this.model = model;
  }

  public void setYear(int year) {
    if (year > 1885) {
      this.year = year;
    } else {
      System.out.println("Rok musi być większy niż 1885.");
    }
  }

  // Metoda wyświetlająca dane samochodu
  public void displayInfo() {
    System.out.println("Samochód: " + make + " " + model + ", Rok: " + year);
  }

  // Metoda główna do demonstracji
  public static void main(String[] args) {
    // Tworzenie obiektu Car
    Car car = new Car("Toyota", "Corolla", 2020);

    // Wyświetlanie informacji
    car.displayInfo();

    // Aktualizacja modelu
    car.setModel("Camry");
    car.displayInfo();

    // Próba ustawienia niepoprawnego roku
    car.setYear(1800);
    car.displayInfo();
  }
}

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

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