Java 类高级特性
Java 类高级特性
高级特性概览
Java 面向对象的高级特性包括:
- 继承:代码复用,建立 is-a 关系
- 多态:通过统一接口调用不同对象,实现灵活性
- 抽象类与接口:定义通用模板和契约
- 封装:隐藏内部数据,控制访问
- final 修饰符:控制类、方法和变量不可变性
继承(Inheritance)
class Vehicle {protected String brand;protected int speed;public Vehicle(String brand) { this.brand = brand; }public void accelerate(int increment) {speed += increment;System.out.println(brand + " 加速到 " + speed + " km/h");}
}class Car extends Vehicle {private int doors;public Car(String brand, int doors) {super(brand);this.doors = doors;}@Overridepublic void accelerate(int increment) {super.accelerate(increment);System.out.println("Car accelerate 完成");}public void honk() { System.out.println(brand + " 汽车鸣笛!"); }
}
- 子类可重写(override)父类方法
- super 调用父类构造或方法
多态(Polymorphism)
class Animal { public void sound() { System.out.println("动物声音"); } }
class Dog extends Animal { @Override public void sound() { System.out.println("汪汪"); } }
class Cat extends Animal { @Override public void sound() { System.out.println("喵喵"); } }Animal a1 = new Dog();
Animal a2 = new Cat();
a1.sound(); // 汪汪
a2.sound(); // 喵喵
- 多态提高代码灵活性
- 可以在数组或集合中处理不同子类对象
抽象类 vs 接口
abstract class Shape {public abstract double area();
}interface Drawable {void draw();default void setColor(String color) { System.out.println("颜色: " + color); }static void info() { System.out.println("Drawable 接口"); }
}
- 抽象类可包含具体方法和状态
- 接口可多继承,定义契约
- 接口可以有默认方法和静态方法
封装与数据隐藏
public class BankAccount {private double balance;public void deposit(double amount) {if(amount>0) balance += amount;}public boolean withdraw(double amount) {if(amount>0 && amount<=balance) { balance -= amount; return true; }return false;}public double getBalance() { return balance; }
}
- 封装通过 getter/setter 提供受控访问
- 可加入验证逻辑,保证数据完整性
final 修饰符
final class Constants { public static final double PI = 3.14159; }
final void cannotOverride() { }
- final class:类不可继承
- final method:方法不可重写
- final variable:变量不可修改
方法重载与覆盖
- 重载(overload):同一类,方法名相同,参数不同
- 覆盖(override):子类重写父类方法,参数相同
组合与依赖关系
组合:一个类包含另一个类对象,has-a 关系
依赖:方法参数或局部变量使用其他类对象
class Engine { void start() {} }
class Car { private Engine engine = new Engine(); }
总结
- 继承促进代码复用
- 多态提高扩展性
- 抽象类和接口定义模板与契约
- 封装保护对象状态
- final 修饰符保证不可变性
- 重载与覆盖提高方法灵活性
- 组合与依赖设计松耦合结构
