一、封装:给数据筑起安全防护层

封装的本质是隐藏内部实现、暴露安全接口,把类的属性和方法保护起来,避免外部随意篡改,让代码更安全、更易维护。

1. 核心访问修饰符

  • private:私有权限,仅当前类内部可访问,是封装的核心关键字
  • public:公共权限,全场景可访问,用于对外提供操作入口

2. 封装标准实现步骤

  1. 属性私有化:类的成员变量全部用private修饰,禁止外部直接读写
  2. 提供公共访问方法:为每个私有属性编写get(取值)和set(赋值)方法

3. get/set 方法编写规范

  • get方法:public 数据类型 get属性名(){ return this.属性名; },方法名遵循get+属性名首字母大写
  • set方法:public void set属性名(数据类型 变量名){ this.属性名 = 变量名; },无返回值,仅完成赋值

4. 封装的核心价值

  • 保护数据安全性,杜绝非法修改
  • 统一数据操作入口,便于后期维护
  • 降低模块耦合度,隐藏内部实现细节

二、继承:实现代码复用的高效利器

继承是类与类之间 **is-a** 的从属关系,比如「狗是一种动物」「水杯是一种容器」,子类可以直接复用父类的属性和方法,无需重复编写。

1. 基础语法

class 子类名 extends 父类名 {},子类会自动继承父类非私有成员。

2. 继承的核心优势

  • 大幅提升代码复用率,减少冗余代码
  • 增强程序扩展性,快速实现功能迭代

3. 方法重写(Override)

当父类方法无法满足子类需求时,子类可重新实现父类同名方法:

  • 要求:方法名、参数列表、返回值类型与父类完全一致
  • 权限:子类方法访问权限≥父类方法
  • 执行:子类重写后的方法会被优先调用

4. Java 继承关键规则

  • 单继承:一个类只能有一个直接父类,支持多级继承(如 A 继承 B,B 继承 C)
  • 构造方法不可继承:构造方法名必须与类名一致,子类无法继承父类构造
  • 继承权限:由访问修饰符决定
    • private:无法继承
    • default:同包子类可继承
    • protected:所有子类(同包 / 不同包)均可继承
    • public:全局可继承

5. super 关键字用法

  • super()/super(参数):调用父类构造方法,必须放在子类构造方法第一行
  • super.属性/方法:访问父类成员,区分父子类同名属性或方法

三、多态:让程序更灵活的设计哲学

多态是父类引用指向子类对象,编译时遵循父类规范,运行时执行子类逻辑,让程序具备极强的灵活性和通用性。

1. 多态核心语法

父类类名 引用名 = new 子类类名(参数);,是多态的标准写法。

2. 多态执行机制

  • 编译阶段:只能调用父类中定义的属性和方法
  • 运行阶段:JVM 自动检测子类是否重写父类方法,重写则执行子类方法,否则执行父类方法

3. 引用类型转换

  • 向上转型:子类转父类,自动完成,是多态的基础
  • 向下转型:父类转子类,需强制转换,配合instanceof判断可避免类型转换异常

4. 多态开发应用场景

  • 数组:可存储父类及所有子类对象
  • 方法参数:统一接收父类与任意子类实例
  • 返回值:灵活返回父类或子类对象

5. 多态的核心优势

  • 屏蔽子类差异,实现统一管理
  • 代码通用性更强,后期扩展无需修改原有逻辑

更多推荐