面向对象---多态
1、什么是多态
对象在不同时刻表现出来的不同时态。
针对引用类型:
编译期间状态
运行期间状态
Person p = new Person();
多态的前提条件:
A、要有继承关系或者实现关系
B、要有方法重写。
C、要有父类引用指向子类对象。
2. 多态成员特点:方法有重写,而变量没有。
A、成员变量
编译看左边,运行看左边。
B、成员方法
编译看左边,运行看右边。
多态中成员方法的特点:编译看左边,运行看右边,产生的原因:方法有重写
但是看情况:静态方法没有重写。
3.多态的弊端和好处
弊端:父类引用不能使用子类特有功能(方法)
基本类型:隐式转换(小到大),强制转换(大到小)
引用类型:向上转型(小到大),向下转型(大到小)
好处:为了提高代码的扩展性和可维护性
定义工具类:强调工具类不可修改,但必要时可以修改。
抽象类和接口
一切源于不知道某些功能要干什么
1、抽象方法:没有方法体的方法叫做抽象方法。
2、抽象类:如果一个类中含有抽象方法,这个类就可以被定义为抽象类,会被abstract修饰
3、抽象类的特点:
A、抽象类和抽象方法用关键字abstract修饰
B、有抽象方法的类一定是抽象类(或接口),但是抽象类中不一定有抽象方法。
C、抽象类不能被实例化。---通过子类对象进行实例化
D、如果一个类继承抽象类,要么这个类本身是抽象类,要么这个类重写父类所有方法。
4、好处:
作用:强制要求子类重写父类所有功能。
5、抽象类的成员特点:
A、成员变量:可以有成员变量,也可以有常量
B、成员方法:可以有抽象方法,也可以有非抽象方法。
抽象方法是为了要求子类做某些事情。
非抽象方法是为了提高代码的复用性,被子类继承。
C、构造方法:有构造方法。
既然不能实例化,那么构造方法有什么用?
可以用于子类访问父类数据前,对父类数据进行初始化。
接口:
接口可以看成是一个特殊的抽象类,接口不是类。
abstract 不能和final、 static、 private关键字共存。
接口的特点:
A、接口不能被实例化
B、接口中的方法,要么被子类实现,要么子类也是抽象类。
接口可以多继承,类只支持单继承。
2、抽象类和接口的区别:
1、抽象类中的方法不全是抽象方法,而接口中的方法都是抽象方法。
2、抽象类有构造方法,而接口没有构造方法。
接口中的成员特点:
成员变量:接口中只有常量
因为接口中的成员变量默认修饰符:public static final修饰
推荐给出修饰符
成员方法:接口中的方法都是抽象方法
因为接口中的成员方法都有默认修饰符,推荐给出
public abstract修饰
构造方法:接口没有构造方法。
任何类如果没有继承父类,那么这个类就继承自object类
接口和接口之间的关系
接口可以多继承,因为接口的方法都是抽象方法,不会出现调用不明确。
A、什么时候定义类,什么时候定义接口,什么时候定义抽象类
|
|