1. Java面向对象三大特性概述
Java作为一门面向对象的编程语言,其核心思想体现在封装、继承和多态这三大特性上。这三大特性共同构成了Java面向对象编程的基础框架,也是Java区别于过程式编程语言的关键所在。
在实际开发中,我们每天都在使用这些特性。比如当你创建一个类并将某些字段设为private时,你就在使用封装;当你extends某个父类时,你就在使用继承;当你用父类引用调用被子类重写的方法时,你就在体验多态的魅力。
提示:面向对象三大特性不是孤立存在的,它们相互关联、相互补充,共同构建了Java强大的面向对象能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 封装:信息隐藏的艺术
2.1 封装的基本概念
封装(Encapsulation)是面向对象编程中最基础的概念之一。它指的是将对象的状态信息(属性)和行为(方法)捆绑在一起,并对外部隐藏对象的内部实现细节。封装的核心思想可以概括为"信息隐藏"和"数据保护"。
在Java中,封装主要通过访问修饰符(private、protected、public)来实现。合理的封装可以带来以下好处:
- 提高代码的安全性:防止外部代码直接访问和修改对象内部状态
- 降低耦合度:内部实现细节变化不会影响外部调用
- 增强可维护性:修改内部实现不影响外部接口
- 提供精确控制:可以对属性的访问和修改进行校验
2.2 封装的实现方式
Java中实现封装的标准做法是:
- 将类的属性声明为private
- 提供public的getter和setter方法来访问和修改属性
- 在setter方法中添加必要的验证逻辑
java复制public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
if(name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("姓名不能为空");
}
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age < 0 || age > 150) {
throw new IllegalArgumentException("年龄不合法");
}
this.age = age;
}
}
2.3 封装的实际应用场景
在实际开发中,封装的应用非常广泛。以下是一些典型场景:
- DTO/POJO对象:数据传输对象和持久化对象通常都会严格封装属性
- 工具类:工具类的方法通常是public的,但构造方法往往是private的,防止实例化
- 框架设计:框架通常会暴露必要的接口,而隐藏实现细节
- API设计:良好的API设计会通过封装保证稳定性和兼容性
经验分享:在团队开发中,建议将所有成员变量都设为private,只有在确实需要时才提供访问方法。这可以避免许多潜在的问题。
3. 继承:代码复用的利器
3.1 继承的基本原理
继承(Inheritance)是面向对象编程中实现代码复用的重要机制。它允许我们基于已有的类创建新类,新类继承了原有类的特性,并且可以添加新的特性或修改原有特性。
Java中的继承是单继承,即一个类只能直接继承一个父类。继承通过extends关键字实现:
java复制class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
