Java多态类和内部类
1.多态
1.1多态的意义:多态就是指多种形态,在Java中主要从两个方面表现:
同一类型的引用指向不同的对象会有不同的表现如图下:
由上图得:同是职员类型引用,指向不同对象,所干的工作不一样
同一对象向上造型成不同的类型时具有不同的功能如图下:
由上图得,当类型转换后。其功能也发生了变化
1.2向上造型:是指父类的引用指向子类的引用
可以向上造型类型有:继承的父类和实现的接口
若发生向上造型时,Java编译器会给类型检查查看是否匹配
如图下:
1.3强制类型转换:在实际应用中,需要将父类的类型转换为子类的类型,前提是该变量指向子类的类型
此外,我们还可以通过将变量转换为接口类型,前提是该变量所在的类型实现了该接口,如果不满足以上的两种状况,则会发生ClassCastException如图下
1.4 instanceof关键字,为了应对ClassCastException异常,Java提供instanceof关键字,指变量所指向的对象是否是所指向的类型。
2.内部类
2.1定义内部类:是指定义在一个类中的类,叫内部类(Inner),外面的类叫做外部类(Outer),内部类服务于外部类,对外是不可见的,内部类可以直接调用外部类。如图下:
2.2创建内部类对象:内部类对象一般在外部类对象中创建,(构造方法和其他方法),内部类中会有一个隐式的引用指向他所创建的对象,如下代码:
通过上面两图,我们可以知道当创建外部类对象时,外部类构造方法会创建一个内部类对象,同时调用了内部类的方法timeInc;使输出结果为101
2.3定义匿名内部类:如果一段程序需要创建对象(通常为实现某个接口或者继承父类),在使用后其就不再使用了,在这样的情况下,我们就可以使用匿名内部类,格式图下:
代码如下:
上述代码中,实现了Action的方法,并调用了execute方法