Java 作为一门面向对象的编程语言,其核心支撑是封装、继承、多态三大特性。这三大特性相互关联、层层递进,构建了面向对象编程(OOP)的核心逻辑,也是 Java 代码高内聚、低耦合、可复用的关键所在。
封装:数据与行为的'保护屏障'
封装是指将对象的属性(数据)和方法(行为)结合为一个独立的整体,并隐藏对象的内部实现细节,仅通过公开的接口与外部进行交互。封装的核心目的是提高代码安全性、降低耦合度。
在 Java 中,封装主要通过访问修饰符实现,常用的访问修饰符有四种,权限从严格到宽松依次为:private(私有)、default(默认,无修饰符)、protected(受保护)、public(公共)。
使用 private 修饰的属性和方法,仅能在当前类内部访问,外部无法直接操作,避免了数据被随意修改。为了让外部访问私有属性,通常会提供 getter(获取属性值)和 setter(设置属性值)方法,并在方法中加入逻辑校验,保证数据的合法性。
public class Student {
// 私有属性,外部无法直接访问
private String name;
private int age;
// getter 方法,获取姓名
public String getName() {
return name;
}
// setter 方法,设置年龄并校验
public void setAge(int age) {
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄不合法");
}
}
}
封装的优势在于,当内部实现逻辑修改时,只要公开接口不变,外部代码就无需调整,极大提升了代码的可维护性。
继承:代码复用的'桥梁'
继承是指子类(派生类)继承父类(基类)的属性和方法,子类可以直接使用父类的非私有成员,同时也能扩展自身的功能。继承的核心目的是实现代码复用,简化类的设计。
在 Java 中,继承通过关键字 extends 实现,且遵循单继承原则:一个子类只能有一个直接父类,但允许多层继承(子类继承父类,父类再继承祖父类)。所有类的根父类是 Object 类,若一个类未显式声明父类,则默认继承 Object。
子类继承父类后,拥有三种能力:
- 继承:直接使用父类的
public和protected成员。 - 重写:子类可以定义与父类同名、同参数列表、同返回值类型的方法,实现个性化逻辑,重写需遵循'两同两小一大'原则。
- 扩展:子类可以新增独有的属性和方法,丰富类的功能。
另外,父类中的 final 方法不能被重写, 类不能被继承, 关键字可用于子类访问父类的成员。


