以下是Java面向对象编程的核心概念与技术要点详解,结合最新实践规范整理:
一、类与对象
基本定义
类(Class):对象的抽象模板(如Person类定义人的共性属性和行为)
对象(Object):类的具体实例(如new Person("张三", 25))
关系:类是蓝图,对象是实体
对象创建与使用
java
Copy Code
// 定义类
public class Student {
// 属性(成员变量)
String name;
int age;
// 方法
void study() { System.out.println(name + "学习中"); }
}
// 创建对象
public static void main(String[] args) {
Student stu = new Student(); // 实例化
stu.name = "李四"; // 属性赋值
stu.study(); // 方法调用 :ml-citation{ref="2,8" data="citationList"}
}
️ 二、四大核心特性
特性 定义 代码示例
封装 隐藏对象内部状态,通过公共方法控制访问 java
private String name;
public String getName() { return name; }
继承 子类复用父类属性和方法(extends关键字) java
class Employee extends Person { ... }
多态 同一方法在不同子类中有不同实现 java
Animal a = new Dog();
a.sound(); // 调用Dog的覆写方法
抽象 定义规范而不实现细节(抽象类/接口) java
abstract class Shape { abstract void draw(); }
关键细节:
封装数据校验
java
Copy Code
public void setAge(int age) {
if (age >= 0) this.age = age; // 数据有效性检查
else throw new IllegalArgumentException("年龄无效");
}:ml-citation{ref="1,9" data="citationList"}
多态实现条件
继承关系 + 方法重写 + 父类引用指向子类对象
接口新特性(JDK 8+)
支持default默认方法和static静态方法
java
Copy Code
interface Loggable {
default void log(String msg) { // 默认实现
System.out.println("LOG: " + msg);
}
}:ml-citation{ref="13,14" data="citationList"}
⚖️ 三、抽象类 vs 接口
对比维度 抽象类 接口
定义关键字 abstract class interface
方法实现 可包含具体方法 JDK8前只能有抽象方法
成员变量 无限制 默认为public static final常量
多继承 不支持(单继承) 支持多实现(implements A, B)
设计目的 代码复用(is-a关系) 行为契约(has-a能力)
️ 四、开发规范与进阶
构造方法规则
名称与类名相同,无返回值类型
支持重载:
java
Copy Code
public Person() {} // 无参构造
public Person(String name) { ... } // 有参构造 :ml-citation{ref="2,8" data="citationList"}
企业级实践
防御性复制:返回对象副本避免内部状态被修改
不可变类:用final修饰类防止继承破坏封装
设计警示
避免过度使用继承 → 优先组合提升灵活性
接口常量冲突时 → 通过接口名.常量显式指定
学习路径建议
基础阶段:类/对象定义 → 封装/继承实战
进阶阶段:多态机制 → 接口与抽象类设计差异
高阶应用:模块化开发(JPMS)→ 领域驱动设计(DDD)
最新趋势:JDK 22引入Unnamed Classes简化小型程序类定义,企业开发仍推荐完整OOP结构。