Java面向对象 12 - 17
Java面向对象12 - 什么是多态
- 动态编译 : 增强可扩展性
 - 即同一个方法可以根据发送对象的不同而采用多种不同的行为方式
 - 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
 - 多态存在条件
- 有继承关系
 - 子类重写父类方法
 - 父类引用指向子类对象
 
 - 注意:多态是方法的多态,属性没有多态
 
1  | package Demo07;  | 
1  | package Demo07;  | 
1  | package Demo07;  | 
1  | Student  | 
- 经典例子
 
1  | package Demo07;  | 
1  | 1--A and A  | 
Java面向对象13 - instanceof和类型转换
- instanceof 用来判断两个类有没有父子关系
 
1  | package Demo08;  | 
1  | package Demo08;  | 
1  | package Demo08;  | 
1  | package Demo08;  | 
- 类型转换
- 子类转换为父类,低转高,向上转型,可能会丢失一些自己的本来的方法
 - 父类转换为子类,高转低,向下转型,需要强制转换
 
 
1  | package Demo09;  | 
1  | package Demo09;  | 
1  | package Demo09;  | 
1  | go  | 
Java面向对象14 - static关键字详解
- 代码块
 
1  | package Demo10;  | 
1  | 静态代码块  | 
- static 关键字
 
1  | package Demo10;  | 
- final
- 被final修饰的class不能被继承了
 
 
Java面向对象15 - 抽象类
1  | package Demo11;  | 
1  | package Demo11;  | 
Java面向对象16 - 接口的定义与实现
- 普通类:只有具体实现
 - 抽象类:具体实现和规范都有
 - 接口:只有规范
 
1  | package Demo12;  | 
1  | package Demo12;  | 
1  | package Demo12;  | 
作用:
- 约束
 - 定义一些方法让不同的人实现
 - public abstract
 - public static final
 - 接口不能被实例化,接口没有构造方法
 - implements可以实现多个接口
 - 必须要重写接口中的方法
 
Java面向对象17 - N种内部类
在一个类的内部再定义一个类
- 成员内部类
 - 静态内部类
 - 局部内部类
 - 匿名内部类
 
- 成员内部类
 
1  | package Demo13;  | 
1  | package Demo13;  | 
1  | 这是内部类  | 
- 静态内部类
 
如果以上的 Inner class 是 static 类,那么 getID() 方法将会报错,因为static在一开始就执行了,但是id并不是一个static的东西,所以id还尚未出现,所以报错。除非id也是static。
- 局部内部类
 
1  | package Demo13;  | 
1  | package Demo13;  |