7.1 类的继承
继承在面向对象开发思想是一个非常重要的概念,它使整个程序架构具有一定的弹性。在程序中复用一些已经定义完善的类,不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。
在java语言中,java只支持单继承,即一个类只能有一个父类,一个类继承另一个类需要使用关键字extends,关键字extends的使用方法如下:
class Child extends Parent{}
【例7.1】 创建子类对象,观察构造方法执行顺序。父类Parent和子类Child都各自有一个无参的构造方法,在main()方法中创建子类对象时,Java虚拟机会先执行父类的构造方法,然后再执行子类的构造方法。
package java_继承_多态抽象类_接口;
class Parent{
public Parent() {
System.out.println("调用父类的构造方法");
}
}
class Child extends Parent{
public Child() {
System.out.println("调用子类的构造方法");
}
}
public class Demo {
public static void main(String[] args) {
new Child();
}
}
子类继承父类后可以调用父类创建好的属性和方法。
【例7.2】在电话类的基础上衍生出手机类。Telephone电话类作为父类衍出Mobile手机类,手机类可以直接使用电话类的按键属性和拨打电话行为。
package java_继承_多态抽象类_接口;
class Telephone{
String buttton = "button:0~9"; //成员属性 电话有10个按键
void call() { //拨打电话
System.out.println("开始拨打电话");
}
}
class Mobile extends Telephone{ //手机类继承电话类
String screen = "screen:液晶屏"; //成员属性,液晶显示屏
}
public class Demo2 {
public static void main(String[] args) {
Mobile motto = new Mobile();
System.out.println(motto.buttton); //子类调用父类属性
System.out.println(motto.screen); //调用自己的属性
motto.call(); //子类调用父类的方法
}
}
java虽然不允许同时继承两个父类,但不代表java没有多继承的关系,可以通过类似”祖父>父亲>儿子>孙子“的方式实现多代继承。例如,绝大多数动物有眼睛、鼻子、嘴巴,犬类继承动物类,所以犬类也有眼睛、鼻子、嘴巴,哈士奇是犬类的一种,所以犬类有的特征哈士奇也有。这3个类的继承关系就是 **动物>犬>哈士奇 ** 这样就是实现了哈士奇类的多继承。