Java面向对象编程:封装、继承与多态案例
Java是一种广泛使用的面向对象编程语言,它提供了封装、继承和多态等特性。下面我们将通过几个实际案例来理解这些概念。
封装:
// 假设有一个Car类
class Car {
private String brand; // 属性
private int yearOfManufacture; // 属性
// 构造函数
public Car(String brand, int year) {
this.brand = brand;
this.yearOfManufacture = year;
}
// 获取品牌的方法,内部操作
public String getBrand() {
return brand;
}
}
在这个例子中,
Car
类的属性(如品牌和年份)被封装在类内部。外界只能通过类提供的方法来访问这些属性。继承:
```java
// 假设有一个Vehicle类作为父类
class Vehicle {
// 父类共有的方法
public void startEngine() {System.out.println("Vehicle engine started.");
}
}
// 子类Car继承自父类Vehicle
class Car extends Vehicle {
private String color;
// 子类独有的属性和方法
public Car(String brand, int year, String color) {
super(brand, year); // 调用父类构造函数
this.color = color;
}
// 重写父类方法,子类操作
@Override
public void startEngine() {
System.out.println("Car engine started (" + color + ")."));
}
}
在这个例子中,`Car` 类继承自`Vehicle` 类。`Car` 类不仅保留了父类的属性和方法,还添加了自己的独有的属性(如颜色)和方法。
3. **多态**:
```java
// 创建对象并调用方法,体现不同形态
class Test {
static void main(String[] args) {
Vehicle vehicle1 = new Car("Toyota", 2021, "Blue"));
Vehicle vehicle2 = new Car("Ford", 2022, "Red"));
// 调用startEngine方法,根据对象类型动态调用
if (vehicle1 instanceof Car)) {
((Car) vehicle1).startEngine(); // 调用Car类的方法
} else if (vehicle2 instanceof Car)) {
((Car) vehicle2).startEngine(); // 调用Car类的方法
}
}
}
在这个例子中,我们通过创建Car
类的实例并将它们赋值给Vehicle
类的对象来展示了多态。调用方法时会根据对象的实际类型动态地选择相应的方法,这就是多态现象。
还没有评论,来说两句吧...