Java中的三大特性

Java 的三大特性:封装、继承、多态

Java 是典型的面向对象编程语言(OOP),其最核心的三大特性就是封装(Encapsulation)继承(Inheritance)多态(Polymorphism)。这三大特性是 Java 设计的基础,帮助实现代码的可重用性、可维护性和灵活性。

1. 封装(Encapsulation)

定义:将对象的属性(数据)和行为(方法)绑定在一起,并尽可能隐藏对象的内部实现细节,只对外暴露必要的接口。

核心思想: “高内聚,低耦合” —— 数据保护 + 信息隐藏。

实现方式

  • 使用访问修饰符(private、protected、public、默认)
  • 属性私有化(private)
  • 提供公共的 getter/setter 方法

示例

public class Person {
    private String name;    // 属性私有
    private int age;

    // 公共 getter/setter
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0 && age < 150) {  // 封装时可加入数据校验
            this.age = age;
        }
    }
}

优点

  • 保护数据安全(防止外部随意修改)
  • 提高代码维护性(内部实现可随意修改,只要接口不变)
  • 便于单元测试和模块化开发

2. 继承(Inheritance)

定义:子类(派生类)可以继承父类(基类)的属性和方法,实现代码复用。

核心思想: “is-a” 关系(子类是一种父类)。

实现方式

  • 使用 extends 关键字(类继承)
  • Java 只支持单继承(一个类只能继承一个父类),但可通过接口实现多继承效果

示例

class Animal {
    public void eat() {
        System.out.println("吃东西");
    }
}

class Dog extends Animal {  // Dog 是 Animal
    public void bark() {
        System.out.println("汪汪");
    }
}

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();   // 继承自 Animal
        dog.bark();  // 自身方法
    }
}

优点

  • 代码复用,避免重复编写
  • 建立类层次结构,便于管理

注意事项

  • 子类可重写(override)父类方法
  • 使用 super 关键字调用父类构造器或方法

3. 多态(Polymorphism)

定义:同一接口,不同实例执行时表现出不同的形态。简单说:“一个接口,多种实现”。

两种实现形式

  1. 编译时多态(方法重载 Overloading):同一个类中,方法名相同、参数列表不同
  2. 运行时多态(方法重写 Overriding):父类引用指向子类对象,调用被重写的方法时执行子类版本

运行时多态是 Java 多态的核心

示例(运行时多态):

class Animal {
    public void makeSound() {
        System.out.println("动物叫声");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a1 = new Dog();  // 向上转型
        Animal a2 = new Cat();

        a1.makeSound();  // 输出:汪汪(运行时决定调用 Dog 的版本)
        a2.makeSound();  // 输出:喵喵
    }
}

实现条件(运行时多态):

  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象(向上转型)

优点

  • 提高代码扩展性和灵活性
  • 实现“面向接口编程”,降低耦合(如 List list = new ArrayList<>())

三大特性对比总结表

特性核心目的关键字/机制典型应用场景
封装数据隐藏与保护private + getter/setterPOJO 类、业务实体
继承代码复用extends建立类层次(如 Animal → Dog)
多态灵活性与扩展性override + 向上转型框架设计(如 Spring、集合框架)

实战建议

  • 优先使用封装保护数据(所有属性 private)
  • 合理使用继承建立 is-a 关系,避免滥用(组合优于继承)
  • 充分利用多态实现解耦,面向接口/抽象类编程

这三大特性相互配合,是 Java 面向对象编程的精髓。掌握它们,你就能写出更优雅、更可维护的 Java 代码!

如果你想深入某个特性(如多态的 JVM 实现机制、抽象类 vs 接口等),随时告诉我!

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部