1、多态的概念和前提
编译期间状态和运行期间状态不一样
3、举例
水(水,冰,水蒸气)
狗:狗是狗,狗是动物,狗是宠物,狗是食物//该处强调谁是谁的一种
B:要有方法重写或实现关系
C:要有父类引用指向子类对象,或父接口引用指向子类对象
2、多态的成员特点
1、成员变量
2、非静态成员方法
3、多态的弊端和好处
4、基本类型和引用类型中类型转换问题
隐式转换:
byte b = 1;int i = b;
强制转换:
int i = 1;byte b = (byte)i;
向上转型 (由小到大):
Zi zi = new Zi();Fu fu = zi;
3、引用类型转换过程中的问题向下转型 (由大到小):Fu fu = new Zi();Zi zi = (Zi)fu;
5、抽象类和抽象方法
6、抽象类的基本特点及作用
2、有抽象方法的类一定是抽象类(或者接口)。抽象类中不一定有抽象方法。
3、抽象类不能被实例化。//因为被实例化后根本不知到他具体代表的谁
4、如果一个类继承抽象类,那么这个类要么本身也是抽象类。这个类 必须 重写父类的所有抽象方法。
作用: 强制要求子类必须完成某些功能
7、抽象类的成员特点
问:既然不能被实例化,那么有构造方法有什么用?
答:可以用于子类访问父类数据前,对父类数据进行初始化。
3、成员方法
2、非抽象方法和抽象方法的作用
抽象方法是为了要求子类做某些事情。
非抽象方法是为了提高代码复用性,被子类继承。
8、接口
interface 接口名
{
//静态常量和抽象方法
class 类名 implements 接口名1,接口名2...
{
9、接口的基本特点
1、接口不能被实例化。
2、接口中的方法:
要么被子类重写。
10、接口的成员特点
1、成员变量:接口中只有常量
因为接口的成员变量有默认修饰符:public static final
推荐:永远自己给出修饰符。
2、构造方法
没有构造方法//因为接口中的成员变量都被final修饰,定义的时候必须做初始化
任何类如果没有继承父类,那么这个类就继承自Object类。//所有类都直接或者间接的继承自Object类。Object类是所有类的超类
3、成员方法:接口中的方法都是抽象的
因为接口中的成员方法有默认修饰符:public abstract
推荐:永远自己给出修饰符。
4、接口的注意事项接口中不能有静态代码块,代码块,构造方法
11、接口的思想特点
接口是对外暴露的规则
接口是程序的功能扩展
接口的出现降低耦合性
接口可以用来多实现
12、抽象类和接口,类和接口的关系
1、抽象类和接口的关系
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法。
成员方法:可以是抽象方法,也可以是非抽象方法。
接口:
成员变量:只能是常量。
默认修饰符:public static final
成员方法:只能是抽象方法。
默认修饰符:public abstract
2、类与接口的关系
类与类:
继承关系,只能单继承,可以多层继承。
类与接口:
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口。
接口与接口:
3、设计理念的区别
抽象类被继承,这个类中定义的是整个继承体现的共性内容。
体现:is a
接口被实现,这个接口中定义的是整个体现的扩展内容。
13、什么时候定义抽象类,什么时候定义接口