一、引言
编程语言中,面向过程编程的代码是一步步的指令(就类似于菜谱);而在面向对象编程中,代码就类似于与你交互的对象(类似于厨师与服务员)。
本文将通过理论与实际案例相结合带领大家深入理解面向对象的四大核心特性(封装、继承、多态及抽象)及其余相关概念。
二、OOP的四大核心特性
1.封装
定义:隐藏对象的内部实现细节,仅暴露必要接口。
实例:


图一是封装实现,图二是封装使用。
封装的核心概念:
数据隐藏与行为暴露。而在实例中就有所体现:所有属性(name,age,gender)都被声明为private;通过公共的getter与setter方法来控制对这些属性的访问。
封装的六大优点:
数据保护与安全性、实现细节隐藏、提高代码可维护性、简化使用复杂度、便于添加额外逻辑、增强代码的可测试性。
封装的实践:
1、所有字段尽可能私有化;2、谨慎使用getter与setter;3、方法命名规范。
总结:
通过实例,可知封装:
1.保护对象内部状态不被随意修改
2.隐藏实现细节降低耦合度
3.提高代码的可维护性和扩展性
4.使代码更安全、更健壮
封装是面向对象设计的基石 ,是必须掌握的核心。
2.继承
定义:子类继承父类的属性和方法,实现代码复用。
实例:


其中animal类是父类,dog类是子类。
继承的核心概念:
代码复用与方法重写。
继承的五大优势:
1、代码复用性;2、方法重写与多态;3、层次化类设计;4、统一接口;5、易于维护。
继承的注意事项:
1、合理使用super关键字;2、注意方法重写规则。
总结:
继承的核心价值:代码复用、多态、层次关系。
3.多态
定义:同一操作作用于不同对象时表现出不同行为。
实现方法:方法重写、接口类/抽象类。
实例:
1、方法重写(如继承中的实例)
2、接口类:


3、抽象类(如抽象中的实例)
多态的基本概念:
1、同一操作作用于不同对象时,可以产生不同的行为;2、同一接口,多种实现。
多态的实现:
1、方法重写;2、方法重载;3、接口多态(如上实例)。
多态的核心优势:
1、代码扩展性;2、接口统一;3、降低耦合。
总结:
1、多态的本质:同一接口,多种实现。
2、三大实现方式:方法重写,方法重载,接口实现。
多态让代码更灵活、更简洁、更健壮。
4.抽象
定义:提取共性,隐藏细节(如抽象类、接口)、定义规范。
实例:
1、抽象类



抽象类不能被实例化(new Animal())会报错,它可以包含抽象方法与普通/具体方法,但是其子类必须实现所有抽象方法(除非子类也是抽象类)。
2、接口(如多态实例)
可以实现多继承。
抽象的核心价值:
1、简化复杂性;2、提高扩展性;3、强制规范。
抽象类与接口差异:
|特性 | 抽象类 | 接口 |
|---------------------|------------------------------ |----------------------------------|
| 实例化 | 不能 | 不能 |
| 方法实现 | 可以有具体方法 | Java 8+可以有默认方法 |
| 变量 | 可以有各种修饰的变量| 默认public static final |
| 构造方法 | 有 | 无 |
| 多继承 | 单继承 | 多实现 |
| 访问修饰符 | 任意 | 默认public |
选择原则:
需要定义模板方法/部分实现→抽象类
需要多继承→接口
总结:
抽象是面向对象设计的核心工具:
1、两大实现方式(抽象类与接口);2、三大价值(管理复杂性,提高扩展性,强制规范)。
抽象可以使代码更清晰、更灵活、更健壮。
三、其他重要概念
类与对象:类是蓝图,对象是实例。
public class Car{
private String brand;
private int year;
public void startEngine(){
System.out.println("引擎启动“);
}
}
构造函数:对象初始化
public class Car {
private String brand;
private int year;
// 构造函数
public Car(String brand, int year) {
this.brand = brand;
this.year = year;
}
// 重载构造函数
public Car() {
this("未知品牌", 2023); // 调用其他构造函数
}
}
// 使用
Car car1 = new Car("Toyota", 2020);
Car car2 = new Car(); // 默认值
静态成员:
public class MathUtils {
// 静态字段
public static final double PI = 3.14159;
// 静态方法
public static int max(int a, int b) {
return a > b ? a : b;
}
}
// 使用
double circleArea = MathUtils.PI * radius * radius;
int bigger = MathUtils.max(5, 3);
四、面向对象的优缺点
优点:
代码复用、易扩展性、易维护性。
缺点:
性能开销、过度设计风险、学习曲线长。
五、总结
封装:保护对象内部状态
继承:建立类层次关系
多态:统一接口多种实现
抽象:管理复杂性
面向对象的四大核心协同工作,确保面向对象系统的灵活、可维护。
1103

被折叠的 条评论
为什么被折叠?



