面向对象的多态
1.多态的概述:
对象在不同时刻表现出来的不同状态---父类子对象
针对引用对象:编译期间状态 运行期间状态
多态的前提条件:
继承关系或者实现关系(类与接口)
方法重写
父类(父接口)引用指向子类的对象
2.多态的成员特点:方法有重写 变量没有
成员变量:
编译看左边 运行看左边
成员方法:
编译看左边 运行看右边
3.多态的弊端与好处:
弊端:父类的引用不能使用子类特有功能
引用类型:向上转型(小到大) 向下转型(大到小)
举例:Fu f=new Zi();向上转型
Zi z=(Zi)f;向下转型
类型转换的异常:classcastexception类型不匹配
避免:向下转型只能转换成对象本类就是的类型或者父类型
好处:为了提高代码的扩展性和可维护性
开发原则:对扩展开放,对修改关闭
4.抽象类:
针对只有方法声明,没有方法体的方法,java提供了一种表现形式就是抽象方法
关键字:abstract修饰的类是抽象类,修饰方法就是抽象方法
特点:
关键字abstract修饰
如果一个类中有抽象方法就是抽象类(或者接口),抽象类中不一定有抽象方法
抽象类不能被实例化(抽象类的多态,通过子类对象进行实例化)
子类继承父类,子类可以写成abstract,或者重写父类的所有抽象方法
---强制要求子类做某些事情
5.抽象类的成员特点:
成员变量:可以有成员变量也可以有常量
构造方法:有构造方法 用于子类访问父类数据前非父类的数据进行初始化
成员方法:可以有抽象方法也可以由非抽象方法
抽象方法为了要求子类必须实现方法做某些事情
非抽象方法为了提高代码的复用性,被子类继承
抽象不能与private(不能被重写) final(不能被继承) static(抽象方法调用没有意义)共存
6.接口:
一个类中所有的方法都是抽象方法针对这种情况java就提供一个更加抽象的表现形式就是接口
类与接口之间是实现关系implements
接口的多态
注意事项:接口并不是一个类它其实更像是一个规则的体现
基本特点:
接口不能被实例化
接口中的方法(子类重写)(子类也是抽象类)
成员特点:
成员变量:接口中只有常量,默认修饰符public static final
构造方法:没有构造方法(都是静态的不需要初始化随类的加载而加载)
任何类如果没有继承父类就是默认继承object
子类的super走的是object
成员方法;接口中的方法都是抽象的
因为接口的成员方法有默认修饰符即public abstract
7.类与接口的关系:
类与接口的关系:可以单实现也可以多实现
并且还可以在继承一个类的同时,实现多接口
接口与接口的关系:可以单继承也可以多继承
8.接口的思想特点:
对外暴露规则
程序的功能扩展
降低耦合性
多实现弥补了类的单继承的局限
9.接口与抽象类的区别:
成员特点:
关系特点:
设计理念:
抽象类被继承这个类中定义的是整个继承体现的共性内容
接口的被实现这个接口中定义的是整个体现的扩展内容
10.案例的分析:
分析:就是由具体到抽象
实现:就是抽象到具体
使用:使用具体的
|
|