Наследование - это принцип ООП, который позволяет создавать новый класс на основе уже существующего, наследуя его свойства и методы. Класс, от которого происходит наследование, называется суперклассом или родительским классом, а класс, который наследует свойства и методы, называется подклассом или дочерним классом.
Примеры использования наследования:
- Класс, представляющий фигуру, может быть использован для создания конкретных фигур, таких как круг, квадрат, прямоугольник и т.д. Классы, представляющие конкретные фигуры, могут наследовать свойства и методы от родительского класса, таких как вычисление площади и периметра.
public class Shape {
protected double area;
protected double perimeter;
public double getArea() {
return area;
}
public double getPerimeter() {
return perimeter;
}
}
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
area = Math.PI * radius * radius;
perimeter = 2 * Math.PI * radius;
}
public double getRadius() {
return radius;
}
}
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
area = length * width;
perimeter = 2 * (length + width);
}
public double getLength() {
return length;
}
public double getWidth() {
return width;
}
}
2. Класс, представляющий животное, может быть использован для создания конкретных видов животных, таких как кошки, собаки, птицы и т.д. Классы, представляющие конкретные виды животных, могут наследовать свойства и методы от родительского класса, таких как движение, питание и размножение.
public class Animal {
protected String species;
protected String food;
public void move() {
System.out.println("The " + species + " is moving");
}
public void eat() {
System.out.println("The " + species + " is eating " + food);
}
public void reproduce() {
System.out.println("The " + species + " is reproducing");
}
}
public class Cat extends Animal {
public Cat() {
species = "cat";
food = "cat food";
}
public void meow() {
System.out.println("The cat is meowing");
}
}
public class Dog extends Animal {
public Dog() {
species = "dog";
food = "dog food";
}
public void bark() {
System.out.println("The dog is barking");
}
}
3. Класс, представляющий работника, может быть использован для создания конкретных должностей, таких как менеджер, программист, бухгалтер и т.д. Классы, представляющие конкретные должности, могут наследовать свойства и методы от родительского класса, таких как имя, зарплата, отдел и т.д.
public class Employee {
private String name;
private double salary;
private String department;
public Employee(String name, double salary, String department) {
this.name = name;
this.salary = salary;
this.department = department;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public String getDepartment() {
return department;
}
public void work() {
System.out.println(name + " is working");
}
}
public class Manager extends Employee {
public Manager(String name, double salary, String department) {
super(name, salary, department);
}
public void hireEmployee() {
System.out.println(getName() + " is hiring a new employee");
}
}
public class Programmer extends Employee {
public Programmer(String name, double salary, String department) {
super(name, salary, department);
}
public void writeCode() {
System.out.println(getName() + " is writing code");
}
}
Таким образом, наследование позволяет повторно использовать код, избегать дублирования кода, упрощать создание новых классов и улучшать структуру программы.
Аналог желудочного сока Бальзам Болотова для улучшения ЖКТ и жизненной силы.