一、继承
1、继承的概念:继承是类与类的一种关系,是一种“is a”关系(注:Java中的继承是单继承:一个类只能有一个父
类)
2、继承的好处:子类拥有父类的所有属性和方法,实现代码的复用;继承的出现让类与类之间产生了关系,提供了
多态的前提。
3、继承的使用:看父类内容,创建子类对象使用
4、方法的重写:
1)如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。
2)语法规则:返回值类型;方法名;参数类型及个数都要与父类继承的方法相同,才叫方法的重写。
5、继承的初始化顺序
1)初始化父类再初始化子类
2)先执行初始化对象中属性,再执行构造方法中的初始化
6、关键字
1)final关键字:final可以修饰类、方法、属性和变量。
final修饰类,则该类不允许被继承;
final修饰方法,则该方法不允许被重写;
final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其
一);
final修饰变量,则该变量的值只能赋一次值,即变为常量。
2)super关键字:在对象的内部使用,可以代表父类对象。
访问父类的属性:super.age
访问父类的方法:super.eat()
Super的应用:
子类的构造的过程当中必须调用其父类的构造方法;
如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法;
如果显示的调用构造方法,必须在子类的构造方法的第一行;
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
二、抽象类
1、Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就
是抽象类。(抽象关键字abstract不可以和final ,private , static 关键字共存)
2、抽象类的特点:
a,没有方法体的方法是抽象方法,一定定义在抽象类中。
b,抽象类和抽象方法必须用abstract关键字所修饰。
c,抽象类不可以被实例化(不能创建对象)。为啥?因为调用抽象方法没有意义。
d,抽象类必须由其子类覆盖掉所有的抽象方法后,其子类才可以进行实例化。否则,该子类还是一个抽象类。
3、抽象方法没有方法体以分号结束
三、接口
1、接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。
2、接口定义的格式:interface 接口名{接口内容}
3、接口定义特点:
a,接口用interface来定义。
b,接口中的成员都有固定的修饰符。
c,接口不能被实例化,。
d,接口必须由其子类覆盖了所有的抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
e,接口中的成员都是public修饰的。
4、接口的出现好处:接口可以被多实现。这就是多继承机制(一个子类继承多个父类),一个类可以实现多个接
口。
5、继承父类实现接口的语法为:
6、抽象类和接口的区别:
1:抽象类只能被继承,而且只能单继承。
接口需要被实现,而且可以多实现。
2:抽象类中可以定义非抽象方法,子类可以直接继承使用。
接口中都有抽象方法,需要子类去实现。
3:抽象类使用的是 is a 关系。
接口使用的 like a 关系。
4:抽象类的成员修饰符可以自定义。
接口中的成员修饰符是固定的。全都是public的。