多态的好处:
1、提高了程序的维护性(由继承保证)
2、提高了程序的扩展性(由多态保证)
向下转型
public static void main(String[] args) {
Fu1 f1 = new Zi1();
f1.fun1();
// f1.show1();
//向下转型
//格式: 子类类名 变量名 = (子类类名)要转型的变量名;
Zi1 z1 = (Zi1)f1;
z1.show1();
//并不是任意两个类型之间都可以做向下转型,只有实际内存对象类型与要转的类型一样
接口
接口:表示一个类的额外功能的实现
java提供了一个关键字表示接口:interface
接口我们可以将它看作成一个特殊的类, 因为接口也会被编译成一个class文件
接口注意事项:
1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
2. 类和接口是实现关系 可以通过关键字implements实现接口
3. 当一个具体的类实现一个接口的时候, 必须要实现接口中所有的抽象方法
4. 若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
5. 一个类可以同时实现多个接口,使用逗号隔开
6. 接口和接口存在继承关系, 并且一个接口可以同时继承多个接口
7. 接口中只能定义常量, 默认修饰符为public static final
8. 接口无法实例化, 接口中不能出现构造方法
面试题:
java中允许多继承吗?
答:
若是类和类之间的继承,只能单继承,不能多继承
若是接口与接口之间的继承,可以多继承
abstract关键字
java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstract
abstract 抽象的
可以修饰类,修饰成员方法
1. 被abstract修饰的类是抽象类, 抽象类不能被实例化
2. 被abstract修饰的方法是抽象方法, 抽象方法不能有大括号实现
3. 在抽象类,既可以存在具体实现的方法, 也可以存在抽象方法
4. 若一个类中有抽象方法, 这个类一定是一个抽象类
5. 当一个具体的类继承一个抽象类, 必须要实现抽象类中的所有抽象方法
6. 当一个抽象类继承一个抽象类的时候, 可以选择性地是否重写抽象方法
抽象类与类中成员的关系:
成员变量: 抽象类既可以存在变量, 也可以存在常量
构造方法: 可以存在构造方法, 是为了将来在继承关系做初始化的作用
成员方法: 既可以是具体的实现方法, 也可以是抽象方法
思考
1. 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义? 可以表示一种概念的集合
2. abstract不能和哪些关键字共存
final 不能共存
static 不能共存
private 不能共存
标签:day08,继承,abstract,接口,抽象,抽象类,方法
From: https://www.cnblogs.com/flxf/p/18474951