继承: 子类通过extends关键字继承父类的属性和行为,子类可以直接 访问父类的非私有属性和行为。提高了代码的复用性。继承是多态的前提。
格式:class 子类extends 父类{ 代码 };
子类若访问父类的与同名 的成员变量,要用super关键字。
格式: super.父类成员变量名.
方法重写: 子类中出现与父类重名的成员方法,要求返回值类型、函数名、参数列表一模一样。此时在调用父类方法时,需要用super关键字。 (super.父类方法名())。
继承后的特点:构造方法:
一、 构造方法与类名一致,所以子类无法继承父类构造方法。
二、子类初始化时,必须先执行父类的初始化动作,子类默认有super(),表示调用父类的构造方法, 父类成员变量初始化后,才可以给子类使用。
继承的注意事项:
一、Java只支持单继承,不支持多继承。 即一个类只能有一个父类,不可以有多个父类。
二、Java支持多层继承(继承体系)。 一个类可以继承父类,也可以被继承。
三、子类和父类是相对概念。
抽象类:当父类方法被重写后,方法主体就没有意义了,没有方法主体 的方法叫抽象方法,包含抽象方法 的类就是抽象类。
abstract关键字:
抽象方法:使用abstract 修饰的方法就成了抽象方法,只有方法名,没有方法体。
格式:修饰符 abstract 返回值类型 方法名 (参数列表);
抽象类:包含抽象方法的,必须是抽象类。
继承抽象类的子类必须重写父类的所有抽象方法。否则该子类也必须声明为抽象类。最终,必须要有子类实现该父类的抽象方法,否则从父类到子类都不能创建对象,失去意义。此时的方法重写,是子类对父类抽象方法的实现,这种重写的操作,也叫做实现方法。
注:
- 抽象类不能创建对象,只能创建其非抽象子类的对象。
- 抽象类中,允许有构造方法,是供子类创建对象时,初始化父类成员使用的。即子类构造方法中,有默认的super(),需要访问父类构造方法。
- 抽象类中,不一定是有抽象方法,但有抽象方法的类必是抽象类。
- 抽象类的子类,必须重写抽象父类的所有抽象方法。