继承
含义:java创建多个类有相同的属性和方法,则可以创建一个公用的类来包含这多个类所相同的属性和方法,然后在每个类中声明父类,继承相同的属性和方法 ,这样就不用反复写相同的代码
注意:一个类只能声明一个父类,不能同时继承两个父类,但是可以嵌套
例如:创建一个A类作为父类,B类声明A类为其父类,继承属性;
创建C类声明B类为其父类,继承属性(同时拥有类A类和B类的属性)
但是不可以在C类中声明A类和B类同时为其父类。
下面用一个小练习来说明:
1、创建一个Vehicle类(A类)
//定义一个Vehicle类
public class Vehicle {
// 定义属性
private int wheels;
private double weight;
// 有参构造方法
public Vehicle(int wheels, double weight) {
super();//继承Object有参构造方法
this.wheels = wheels;
this.weight = weight;
}
// 无参构造方法
public Vehicle() {
super();//继承Object无参构造方法
}
// 配合private使用,防止恶意篡改数据
public int getWheels() {
return wheels;
}
public void setWheels(int wheels) {
this.wheels = wheels;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
// 方法show1
public void show1(){
System.out.println("车轮个数:"+this.wheels);
System.out.println("车重:"+this.weight+"吨");
}
}
2、创建一个Car类(B类)
public class Car extends Vehicle{//extends Vehicle:声明父类为Vehicle
private int loader;
public Car(int wheels, double weight, int loader) {
super(wheels, weight);//继承Vehicle有参构造方法
this.loader = loader;
}
public Car() {
super();//继承Vehicle无参构造方法
}
public int getLoader() {
return loader;
}
public void setLoader(int loader) {
this.loader = loader;
}
// 方法show2
public void show2(){
System.out.println("车载人数为:"+this.loader);
}
}
3、创建一个Truck类(C类)
public class Truck extends Car {//extends Car:声明父类为Car
private double payload;
public Truck(int wheels, double weight, int loader, double payload) {
super(wheels, weight, loader);//继承Car有参构造方法
this.payload = payload;
}
public Truck() {
super();//继承Car无参构造方法
}
public double getPayload() {
return payload;
}
public void setPayload(double payload) {
this.payload = payload;
}
// 方法show3
public void show3(){
System.out.println("有载重量为:"+this.payload+"吨");
}
}
4、创建一个测试
这边只针对Truck类创建对象,但是可以同时调用Vehicle类和Car类的方法
public class Text {
public static void main(String[] args) {
// 创建对象cm
Truck cm = new Truck();
// 赋值
cm.setWheels(4);
cm.setWeight(1.5);
cm.setLoader(5);
cm.setPayload(2);
// 调用方法
cm.show1();
cm.show2();
cm.show3();
}
}