一、继承
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
二、使用继承
1、编写父类
访问修饰符 class Pet { //公共的属性和方法 }
2、编写子类,继承父类
访问修饰符 class Dog extends Pet { //子类特有的属性和方法 }
三、理解继承
1、子类访问父类成员
访问父类构造方法
super();
super(name);
访问父类属性
super.name;
访问父类方法
super.print();
2、(1)使用super关键字,super代表父类对象
(2)在子类构造方法中调用且必须是第一句
(3)不可以访问父类中定义为private的属性和方法
3、子类继承父类的什么?
继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里
四、继承条件下的构造方法
继承条件下构造方法的调用规则
子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法
系统默认调用父类的无参构造方法
子类构造方法通过super显式调用父类的有参构造方法
执行父类相应构造方法,而不执行父类无参构造方法
子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
五、例
编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法进行属性初识化和输出相关数据的方法;使用Test类中的main方法定义各类初始化数据后台打印相关数据
public class Vehicle {
private int wheels;//车轮个数
private int weight;//车重
public Vehicle() {
}
public Vehicle(int wheels, int weight) {
this.wheels = wheels;
this.weight = weight;
}
public void pointVehicle (){
System.out.println("车轮个数为:"+this.wheels+"个");
System.out.println("车重为:"+this.weight+"吨");
}
}
public class Car extends Vehicle {
private int loader;
public Car() {
}
public Car(int wheels, int weight, int loader) {
super(wheels, weight);
this.loader = loader;
}
public void pointCar (){
System.out.println("车载人数为:"+this.loader);
}
}
public class Truck extends Car{
private int payload;
public Truck() {
}
public Truck(int wheels, int weight, int loader, int payload) {
super(wheels, weight, loader);
this.payload = payload;
}
public void pointTruck (){
System.out.println("车载重量为:"+payload);
}
}
public class Test {
public static void main(String[] args) {
Vehicle v=new Vehicle(4,5);
v.pointVehicle();
Car c =new Car(4,5,8);
c.pointVehicle();
c.pointCar();
Truck t=new Truck(4,5,8,8);
t.pointVehicle();
t.pointCar();
t.pointTruck();
}
}