面向对象—封装、继承、多态

在前面的文章中,我们学习了Java的基本语法、类与对象的概念。今天,我们将深入研究面向对象编程的核心概念:封装、继承和多态。

01.封装(Encapsulation)

封装是一种面向对象编程的基本原则,它将数据和方法组合在一个单元中,并限制对数据的直接访问。在Java中,我们使用访问修饰符来实现封装,通常将数据成员声明为 private,并提供公共方法来访问和修改这些数据。

public class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String newName) {
        name = newName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int newAge) {
        if (newAge >= 0) {
            age = newAge;
        }
    }
}

封装提供了以下好处:

  • 数据隐藏:防止直接修改对象的内部状态,确保数据的一致性和安全性。
  • 灵活性:可以在不影响其他部分的情况下更改内部实现。
  • 代码复用:公共方法可以在不同的类中重复使用。

02.继承(Inheritance)

继承是面向对象编程中的另一个重要概念,它允许一个类继承另一个类的属性和方法。被继承的类称为父类,继承的类称为子类;在java中,一个子类继承一个父类(单一继承),一个父类可以被多个子类继承。这个打个比方就是一个父亲可以有多个子女,每个子女都可以继承父亲的一些行为和属性;但是每个子女只能有一个父亲;

public class Animal {
    void eat() {
        System.out.println("动物吃东西");
    }
}
public class Dog extends Animal {
    void bark() {
        System.out.println("狗汪汪叫");
    }
}

在这个示例中,Dog 类继承了 Animal 类的 eat() 方法。子类可以继承父类的属性和方法,并可以添加自己的特定行为。 

03.多态(Polymorphism)

多态是面向对象编程的强大特性,它允许不同的对象对相同的消息作出不同的响应。多态的实现方式之一是方法重写,子类可以重写父类的方法。

public class Animal {
    void makeSound() {
        System.out.println("动物发出声音");
    }
}
public class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("狗汪汪叫");
    }
}
public class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("猫喵喵叫");
    }
}

在这个示例中,Animal 类定义了 makeSound() 方法,而子类 Dog 和 Cat 分别重写了这个方法以提供不同的声音。

04.结语

封装、继承和多态是面向对象编程的核心概念,它们允许我们创建更加模块化、可维护和灵活的代码。理解并灵活运用这些概念是成为Java高级开发者的关键一步。

在下一篇文章中,我们将探讨更高级的面向对象编程概念,如抽象类和接口。

THE END