JAVA---面向对象的三大特性
一、封装:给数据筑起安全防护层
封装的本质是隐藏内部实现、暴露安全接口,把类的属性和方法保护起来,避免外部随意篡改,让代码更安全、更易维护。
1. 核心访问修饰符
private:私有权限,仅当前类内部可访问,是封装的核心关键字public:公共权限,全场景可访问,用于对外提供操作入口
2. 封装标准实现步骤
- 属性私有化:类的成员变量全部用
private修饰,禁止外部直接读写 - 提供公共访问方法:为每个私有属性编写
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. 多态的核心优势
- 屏蔽子类差异,实现统一管理
- 代码通用性更强,后期扩展无需修改原有逻辑
