面向对象四

1、多态
1. 多态:失误存在的多种形态
2. 多态前提:
a. 要有继承关系
b. 要有方法重写
c. 要有父类引用指向子类对象
3. 多态中成员访问特色:
a. 成员变量
i. 编译看左边(父类),运行看左边(父类)
b. 成员方法:
i. 编译看左边(父类),运行看右边(父类) [动态绑定],编译的时候找父类的方法,运行的时候找子类的方法。
c. 静态方法:
i. 编译看左边(父类),运行看左边(父类)。
ii. (静态和类相关,算不上重写,因此,访问仍是左边)。
※只有非静态的成员方法,编译看左边,运行看右边。
4. 多态中的向上转型和向下转型
a. Person p =new SuperMan(); //向上转型
b. SuperMan() sm=new (SuperMan)p;//向下转型
5. 多态的好处和弊端
a. 好处
i. 提升代码的维护性(继承保证)
ii. 提升代码的扩展性(由多态保证)
iii. 能够当作形式参数,能够接受任意子类对象
b. 弊端:
i. 不能使用子类的特有属性和行为
2、抽象类概述及其特色
1. 抽象类概述
a. 抽象就是抽出像的部分
2. 抽象类的特色
a. 抽象类和抽象方法必须用abstract关键字修饰
i. 抽象类:abstract class 类名{}
ii. 抽象方法:public abstract void eat();
b. 抽象类不必定有抽象方法,有抽象方法的类必定是抽象类或者接口。
c. 抽象类不能实例化
i. 按照多台的方式,由具体的子类实例化。其实这也是堕胎的一种,抽象类多态。
d. 抽象类的子类
i. 要么是抽象类
ii. 要么重写抽象类中的全部抽象方法。
 
3. 抽象类中的成员特色:
a. 成员变量:既能够是变量,也能够是常量。abstract修饰符不能修饰成员变量
b. 构造方法:有
i. 用于子类访问父类数据的初始化。
c. 成员方法:既能够抽象的,也能够是非抽象的。
d. 和abstract不能共存的修饰符
i. static:经过类名调用抽象方法是没哟意义的。
ii. final:abstract强制子类重写,final 不容许子类重写,相互矛盾。
iii. private:只能在本类中访问,子类没法访问该方法,则不能重写。
3、接口的概述及其特色:
1. 接口概述
a. 从狭义的角度讲就是指java中的interface
b. 从广义的角度讲对外提供规则的都是接口
2. 接口的特色:
a. 接口用关键字interface表示
i. interface 接口名{}
b. 类实现接口用implements表示
i. class 类名 implements 接口名{}
c. 接口不能实例化
i. 能够按照多态的方式实例化。
d. 接口的子类
i. 能够是抽象类,可是意义不大
ii. 可使具体类,要重写接口中的全部抽象方法。
3. 接口中的成员变量
a. 只能是常量,而且是静态的公共的。
i. 默认修饰符:public static final,建议手动给出该修饰符、
b. 构造方法:接口没有构造方法
c. 成员方法:只能是抽象方法
i. 默认修饰符:public abstract,建议手动给出该修饰符。
4、类与类、类与接口、接口与接口的关系
1. 类与类:
a. 继承关系,只能单继承,能够多层继承。
2. 类与接口
a. 实现关系,能够单实现,也能够多实现。
b. 而且还能够在继承一个类的同时实现多个接口。
3. 接口与接口
a. 继承关系,能够单继承,也能够多继承。
5、抽象类和接口的区别:
1. 成员区别:
a. 抽象类:
i. 成员变量:能够变量、也能够常量
ii. 构造方法:有
iii. 成员方法:能够抽象,也能够非抽象
b. 接口:
i. 成员变量:只能是常量
ii. 成员方法:只能是抽象方法。
2. 关系区别:
a. 类与类:
i. 继承,单继承
b. 类与接口:
i. 实现,单实现,多实现。
c. 接口与接口:
i. 继承,单继承,多继承。
3. 设计理念区别:
a. 抽象类:被继承体现的是 “is a”的关系,抽象类中定义的是该继承体系的共性功能
b. 接口: 被实现体现的是“like a”的关系,接口中定义的是该继承体系的扩展功能。
相关文章
相关标签/搜索