第七章 类的深入解析

1. 继承

1.1 类继承的方法:在Java中,子类对父类的继承是在类的声明中使用extends关键字来指明的。其一    般格式为:[类修饰符] class <子类名> extends <父类名>{ 类体内容 }。一个类只能直接继承一个    父类,一个父类可以有多个子类。

1.2 成员变量的继承和隐藏:基于父类创建子类时,子类可以继承父类的成员变量和成员方法。但是,     如果在父类和子类中同时声明了一个同名变量,则这两个变量在程序运行时同时存在。即:父类的     成员变量用于父类方法,子类的成员变量用于子类方法,互不干扰。

1.3 方法的继承与覆盖:子类可以继承父类中所有可以被子类访问的成员方法,但如果子类重新定义了     从父类继承的方法,此时父类的这个方法在子类中将不复存在,此时称为子类方法覆盖了父类的方     法,简称方法的覆盖(override)。

1.4 构造方法的继承:当通过子类创建对象时,系统会首先调用父类的无参构造方法,然后才会执行子     类的构造方法。如果想要调用父类的有参构造方法,可以使用super关键字。


2. 多态性:多态性是指同名的不同方法在程序中共存。即同一个方法定义几个版本,程序运行时根据不    同情况执行不同的版本。“一个对外接口,多个内在实现方法”

    多态性的实现方式:

    (1)方法覆盖实现多态性

         此时通过子类对继承父类的方法进行重定义来实现。

    (2)方法重载实现多态性

        通过定义多个同名的不同方法来实现,系统会根据参数(类型、个数、顺序)的不同来区分不         同方法。


3.抽象类:抽象类中通常只包含抽象方法(只有方法的声明,没有方法体),而方法的具体实现则由其派    生出的各子类来完成,这使得程序的功能描述和功能实现得以分离。此外,由于一个抽象类可派生多    个子类,因此,抽象类中的一个抽象方法可以在多个子类中有多种实现方式,这也实现了类的多态性

 (1)抽象类的定义格式通常如下:

  public abstract class Plane { //声明抽象类

    private String shape;       //声明成员变量

    ......

    public abstract double area(); //声明抽象方法,注意:分号必不可少

    ......

  }

 (2)抽象类是不能实例化的,也就是说,不能基于抽象类来创建对象。

 (3)抽象类中也可以含有普通成员变量和成员方法。但是,抽象方法只能出现在抽象类中。也就       是说,含有抽象方法的类必须是抽象类,非抽象类不能包含抽象方法。


4.接口:接口是由常量和抽象方法组成的特殊类。声明接口的一般格式如下:

  [public] interface 接口名 [extends 父接口名列表]{

    //常量声明

    //抽象方法声明

  }

  接口与抽象类之间的关系:

 (1)接口中只能定义常量和抽象方法,而抽象类中可以声明其他成员变量和成员方法;

 (2)一个类同时只能继承一个抽象类,但可以同时实现多个接口;

 (3)抽象类的继承用extends,接口的实现用implements。