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; |