第六章
一.定义抽象类
抽象类和抽象方法必使用 abstract 关键字来修饰
1.语法
[访问符] abstract class 类名{
[访问符] abstract <返回类型>方法名([参数列表])}
2.抽象类定义规则
1)用 abstract 修饰符定义抽象类
2)用 abstract 修饰符定义抽象方法,只用声明,不需要实现
3)包含抽象方法的类就是抽象类
3.定于抽象类和抽象方法的规则如下:
1)abstract 关键字放在class前,指明该类是抽象类
2)abstract关键字放在方法的返回类型前,指明该方法是抽象方法,抽象方法没有方法体;
3)一个抽象类可以含有多个抽象方法,也可以含有已实现的方法
抽象类是要有子类继承的,抽象类不能自己创建对象,但可写狗杂方法
抽象方法不能是私有的,静态的
抽象类中可以包含普通的方法,也可以没有抽象方法
抽象类的对象不能直接创建,通常是定义引用变量指向子类对象。
二.接口
接口定义了某一批类所需要遵守的公共行为规范,只规范这批类必须提供的某些方法,而不提供任何实现
1.定义接口:Java 只支持单一继承,不支持多重继承,即一个类只能继承一个父类,这一缺陷可以通过接口来弥补。Java允许一个类实现多个接口,这样使程序更加灵活,易扩展。
定义接口规则:
1)接口不能用于实例化对象
2)接口中方法只能是抽象方法、default 方法、静态方法
3)接口成员是 static final 类型
4)接口支持多继承
2.语法
[访问符] interface 接口名[extends父接口1,父接口2,…]{//接口体}
接口名第一个字母大写,接口里的变量是静态变量且有值
3.实现接口
接口不能实例化,但可使用接口声明引用类型的变量,该变量可以引用到接口的实现类的实例对象上,接口的主要用途就是被实现类实现,一个类可以实现一个或多个接口
1)语法
[访问符] class 类名 implement 接口1[接口2…]{//类体}
implement关键字用于实现接口
一个类可以实现多个接口,接口之间使用逗号间隔
接口里方法要实现重写
接口和抽象类有很多相似之处,都具有如下特征
1)接口和抽象类都不能被实例化,需要被其他类实现或继承
2) 接口和抽象类的类型变量都可以指向其实现类或子类的实例对象
3)接口和抽象类都可以包含抽象方法,实现接口或继承抽象类时都必须实现这些抽象方法
一个类即可同时继承也可做接口
与抽象类一样,接口是一种更加抽象的类结构,因此不能对接口直接实例化可以声明接口变量,并用接口变量指向当前接口实现类的实例
使用接口变量指向该接口的实现类的实例对象,这种使用方法也是多态性的一种体现