Java面向对象编程中继承与封装的对比案例
在Java面向对象编程中,继承和封装是两个核心概念,它们各自有不同的用途和特点。下面我将通过一个简单的案例来对比这两个概念。
封装(Encapsulation)
封装是指将对象的数据(属性)和行为(方法)捆绑在一起,并隐藏内部的实现细节,只对外提供有限的接口。封装的目的是减少耦合性,提高模块化。
案例:
```java//一个简单的类,封装了属性和方法public class Car {
private String brand; //品牌,私有属性,外部无法直接访问 private int year; //制造年份,私有属性//构造方法 public Car(String brand, int year) {
this.brand = brand;
this.year = year;
}
//公共方法,用于获取品牌 public String getBrand() {
return brand;
}
//公共方法,用于设置品牌 public void setBrand(String brand) {
this.brand = brand;
}
//公共方法,用于获取制造年份 public int getYear() {
return year;
}
//公共方法,用于设置制造年份 public void setYear(int year) {
this.year = year;
}
}``在这个例子中,
Car` 类封装了品牌和制造年份这两个属性,外部代码不能直接访问这些属性,而是通过公共方法(getters和setters)来访问和修改它们。
继承(Inheritance)
继承是指一个类(子类)继承另一个类(父类)的属性和方法。继承的目的是代码复用和建立类之间的层次结构。
案例:
```java//父类public class Vehicle {
private String type; //车辆类型 public Vehicle(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
//子类,继承自Vehiclepublic class Car extends Vehicle {
private String brand;
private int year;
public Car(String type, String brand, int year) {
super(type); //调用父类的构造方法 this.brand = brand;
this.year = year;
}
//其他Car特有的方法和属性}``在这个例子中,
Car类继承自
Vehicle类,它继承了
Vehicle类的
type属性和相关方法,并且添加了特有的
brand和
year`属性。
对比- 封装:关注于隐藏对象的内部状态和行为,通过公共接口与外部交互。
- 继承:关注于代码复用和建立类之间的层次结构,子类可以扩展或修改父类的行为。
这两个概念在面向对象编程中是相辅相成的,封装可以提高代码的安全性和模块化,而继承可以提高代码的复用性。在实际编程中,合理使用这两个概念可以提高代码的质量和可维护性。
还没有评论,来说两句吧...