1. 封装(Encapsulation)
封装是 将数据(属性)和操作数据的方法(行为)包装在类内部,并通过访问控制来保护数据。
1.1 基本做法
-
将成员变量声明为
private(私有化) -
提供
public的 getter/setter 方法访问变量
public class Person {
private String name; // 私有属性
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age >= 0) { // 数据校验
this.age = age;
}
}
}
✅ 优点
-
控制属性访问权限,避免外部直接修改
-
可在 setter 中增加校验逻辑
-
提高代码可维护性和安全性
2. 继承(Inheritance)
继承是 子类继承父类的属性和方法,实现代码复用和层次结构。
2.1 基本语法
class Animal {
String name;
public void eat() {
System.out.println(name + " 在吃");
}
}
// Dog 继承 Animal
class Dog extends Animal {
public void bark() {
System.out.println(name + " 在叫");
}
}
2.2 使用示例
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "旺财";
dog.eat(); // 调用父类方法
dog.bark(); // 调用子类方法
}
}
2.3 注意点
-
Java 支持单继承(一个子类只能继承一个父类)
-
可使用
super调用父类构造方法或方法 -
子类继承父类后可直接访问
public和protected成员,但不能访问private
class Dog extends Animal {
public Dog(String name) {
super.name = name; // 调用父类属性
}
}
3. 多态(Polymorphism)
多态是 同一操作在不同对象上表现出不同行为。
3.1 方法重写(Override)实现多态
class Animal {
public void makeSound() {
System.out.println("动物叫");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("喵喵喵");
}
}
3.2 父类引用指向子类对象
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog(); // 父类引用指向子类对象
Animal a2 = new Cat();
a1.makeSound(); // 汪汪汪
a2.makeSound(); // 喵喵喵
}
}
✅ 关键点
-
编译时:父类类型决定可调用的方法(方法签名)
-
运行时:实际对象类型决定方法具体实现(动态绑定)
3.3 多态优点
-
提高代码扩展性(增加新子类无需修改调用代码)
-
接口和方法调用更通用,易于维护
4. 小结
| 特性 | 作用 | 实现方法 |
|---|---|---|
| 封装 | 保护数据,隐藏实现细节 | private + getter/setter |
| 继承 | 提高代码复用,形成类层次 | extends 关键字 |
| 多态 | 同一接口,不同表现 | 方法重写 + 父类引用指向子类对象 |
1448

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



