01、多态的概述与前提
一 多态:对象在不同时刻表现出来的不同状态。
二 多条的前提条件:
A:要有继承关系
B;要有方法的重写
C:要有父类的引用指向子类对象
----------------------------------------------------------------------------------------------------------------
02、多态中的成员特点
Fu fu = new Zi();
左边是Fu 右边是Zi
A:成员变量 :编译看父类(看程序会不会报错,如果父类有这个变量就不报错),运行看父类(这个程序运行的结果是谁)
B:成员方法 :编译看父类(看程序会不会报错,如果父类有这个方法就不报错),运行看子类(这个程序调用的方法是谁)
C:因为方法有重写而变量没有
----------------------------------------------------------------------------------------------------------------
03、多态的弊端及相应的解决方案
一 多态的弊端及解决方法
多态的弊端:父类引用无法使用子类特有功能
解决办法:可以把父类向下转型
二 引用类型:
向上转型:小到大
向下转型:大到小
----------------------------------------------------------------------------------------------------------------
04、多态中的类型转换问题
一 在这个知识点中出现类型转换异常的根本原因是多态没有继承关系.
类型转换异常:
java.lang.ClassCastException
如果遇到了这个异常那么表示代码中出现了类型不匹配
如果两个类没有任何关系不能互相转换(关系指的是继承或者实现)
----------------------------------------------------------------------------------------------------------------
05、多态中的类型转换问题内存图解分析
----------------------------------------------------------------------------------------------------------------
06、多态的好处
多态的好处:
可以提高代码的扩展性和可维护性
----------------------------------------------------------------------------------------------------------------
07、抽象类的概述
想要定义一个类为抽象类怎么表示:
类用关键字 abstract 修饰
----------------------------------------------------------------------------------------------------------------
08、抽象类的基本特点
抽象类:类用关键字 abstract 修饰
抽象方法:方法声明要用 abstract, 第二没有方法体
一 抽象类不能被实例化。那么,怎么实例化呢?
通过多态创建子类对象去实例化.
二 如果一个类继承抽象类,那么想要代码不出错怎么解决?
A、子类继承抽象类,子类必须重写父类的所有抽象方法
B、要么子类也定义为抽象类
四 在继承中,我们为什么有些时候,会选择父类是抽象类呢?
可以强制子类做某些事.
注意:有抽象方法的类一定是抽象类(或者是接口)
抽象类中可以没有抽象方法.
----------------------------------------------------------------------------------------------------------------
09、抽象类的成员特点
A:成员变量:既有变量也有常量
B:构造方法:有构造方法
C:成员方法:有抽象方法也有非抽象方法
一 抽象类既然不能被实例化,那么有构造方法有什么用呢?
答:初始化父类的成员,以便给子类使用.
抽象类中的抽象方法,是为了强制要求子类实现某些功能
抽象类中的非抽象方法,是为了提高代码的复用性,让子类继承的
----------------------------------------------------------------------------------------------------------------
10、抽象类案例讲解(老师案例)
抽象关键字abstract不可以和哪些关键字共存?
final 被final修饰的方法不能被重写,而抽象方法最终都是要被重写.
static 如果一个方法被static 修饰那么这个方法就可以直接用类名.调用(这个方法是没有方法体的这样做没有意义)
private 被 private 修饰的方法在子类中是看不见的,所以这个抽象方法也是不能被重写的.
----------------------------------------------------------------------------------------------------------------
11、接口概述
一 如何定义一个接口?
用关键字 interface 接口名
二 如何让一个类去实现一个接口?以及各式
用关键字 implements
格式 class 类名 implements 接口名
----------------------------------------------------------------------------------------------------------------
12、接口的基本特点
特点
A:接口不能实例化
B:接口中的方法,要么被子类重写,要么把子类也定义为抽象类或者接口
----------------------------------------------------------------------------------------------------------------
13、接口的成员特点
A:成员变量:接口中只有常量(因为接口中的变量有默认修饰符 public static final)
B:构造方法:接口中没有构造方法(接口中的常量是static修饰 接口中的方法没有方法体)
C:成员方法:接口中只有抽象方法(因为接口中的 方法有默认修饰符 public abstract)
----------------------------------------------------------------------------------------------------------------
14、类与接口的关系
A:类与类的关系
是继承关系(只能单继承,但是可以多层继承 )
B:类与接口的关系
是实现关系(一个类在继承一个类的同时还可以实现多个接口)
C:接口与接口的关系
继承关系(可以单继承也可以多继承,因为接口直接不会出现方法调用不明确的情况)
D:类与抽象类的关系
继承关系
同类型之前是继承关系(包括类和接口)
不同类型之前是实现关系
----------------------------------------------------------------------------------------------------------------
15、接口的思想特点
A:接口是对外暴漏的原则。
B:接口是程序对外的功能扩展。
C:接口的出现降低耦合性。
D:接口可以用来多实现。
----------------------------------------------------------------------------------------------------------------
16、抽象类和接口的区别
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法。
成员方法:可以是抽象方法,也可以是非抽象方法。
接口:
成员变量:只能是常量。 默认修饰符 public static final
构造方法:无构造方法
成员方法:只能是抽象方法。 默认修饰符 public abstract
A:类与类的关系
继承关系。而且只能单继承,可以多层继承。
B:类与接口的关系
实现关系。可以单实现,也可以多实现。并且还可以在继承一个类的同时,实现多个接口。
C:接口与接口的关系
继承关系。可以单继承,也可以多继承。
抽象类和接口应该如何定义?
抽象类里面定义的是这个体系的共性内容
(可以把一模一样的方法定义为实体方法,把叫法一样但是实现的过程不一样的方法定义为抽象方法)
接口中定义的是扩展功能
----------------------------------------------------------------------------------------------------------------
17-练习题讲解:综合案例分析
如果拿到一个需求
分析:由具体到抽象
实现(写代码的时候):要由抽象到具体 |
|