Logo

Developer learning path

Java

Наследование и полиморфизм в Java

Наследование и полиморфизм

94

#description

Наследование и полиморфизм - это основные понятия объектно-ориентированного программирования.

Наследование позволяет наследовать свойства (поля) и методы одного класса в другой. Класс, который наследует свойства и методы, называется дочерним (наследующим), а класс, которого наследуют, называется родительским (базовым). Дочерний класс может переопределить методы родительского класса, таким образом изменяя их поведение.

Пример наследования:

                    
class Vehicle {
   private String brand;

   public String getBrand() {
      return brand;
   }

   public void setBrand(String brand) {
      this.brand = brand;
   }
}

class Car extends Vehicle {
   private int numOfWheels;

   public int getNumOfWheels() {
      return numOfWheels;
   }

   public void setNumOfWheels(int numOfWheels) {
      this.numOfWheels = numOfWheels;
   }
}

class Main {
   public static void main(String[] args) {
      Car car = new Car();
      car.setBrand("Toyota");
      car.setNumOfWheels(4);
      System.out.println("Brand: " + car.getBrand());
      System.out.println("Number of wheels: " + car.getNumOfWheels());
   }
}
                  

В этом примере класс Car наследует свойства из класса Vehicle и добавляет свое собственное свойство numOfWheels.

Полиморфизм - это способность объекта принимать множество форм. Например, объект дочернего класса может быть использован везде, где ожидается объект родительского класса. Это позволяет использовать общие интерфейсы и уменьшить зависимость от конкретных классов.

Пример полиморфизма:

                    
class Vehicle {
   public void drive() {
      System.out.println("Driving...");
   }
}

class Car extends Vehicle {
   public void drive() {
      System.out.println("Driving car...");
   }
}

class Motorcycle extends Vehicle {
   public void drive() {
      System.out.println("Driving motorcycle...");
   }
}

class Main {
   public static void main(String[] args) {
      Vehicle vehicle1 = new Car();
      Vehicle vehicle2 = new Motorcycle();
      vehicle1.drive();
      vehicle2.drive();
   }
}
                  

В этом примере создаются объекты Car и Motorcycle, которые являются дочерними классами Vehicle. Затем эти объекты сохраняются в переменных типа Vehicle. Метод drive() в каждом дочернем классе переопределен и имеет свою собственную реализацию. В методе main() создаются два объекта типа Vehicle, один для Car, другой для Motorcycle. Когда вызывается метод drive(), вызывается версия метода для соответствующего дочернего класса. Это позволяет использовать метод drive() не только для объекта Car или Motorcycle, но и для других объектов Vehicle, которые могут быть созданы в будущем.

Если вам не совсем понятен какой-то абзац текста из лекции, просто нажмите на него и сможете задать уточняющие вопросы по нему.

Если же непонятен весь вопрос, то нажмите на кнопки внизу, чтобы получить новый вариант объяснения, практические примеры или критически оценить сам вопрос.