Наследование и полиморфизм в Java
Наследование и полиморфизм
94
Наследование и полиморфизм - это основные понятия объектно-ориентированного программирования.
Наследование позволяет наследовать свойства (поля) и методы одного класса в другой. Класс, который наследует свойства и методы, называется дочерним (наследующим), а класс, которого наследуют, называется родительским (базовым). Дочерний класс может переопределить методы родительского класса, таким образом изменяя их поведение.
Пример наследования:
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
, которые могут быть созданы в будущем.