#博学谷IT学习技术支持#
本周主要学习了Java的多态,内部类和Lambda;
封装,继承和多态是Java的三大特性,多态是在继承的基础上实现的,存在多态就一定有继承,一种事物的不同形态就是多态;
类中再次定义的类称为内部类,内部类分为局部内部类和匿名内部类两种;
Lambda表达式是函数式编程思想,与匿名内部类有着一定联系。
实现多态有3个条件,存在继承关系,重写父类方法以及父类引用指向子类对象,下图就是一种形式的多态,定义好父类引用后,即可调用子类中的方法,并执行子类方法中的代码逻辑。

运行结果:

多态的成员特点主要从构造方法,成员变量和成员方法讲起:




没有一个事物是十全十美的,多态也不例外,使用多态的好处是可以提高代码扩展性,而弊端是无法调用子类中特有的方法,一旦调用子类特有的方法,编译时就会出现错误:






定义在类中的类成为内部类,下图中的类In就是内部类:

定义内部类的格式为:外部类.内部类 对象名= new 外部类().new 内部类()

定义好内部类对象并调用Print方法的执行结果为:





多态不仅可以提高代码的可扩展性,还能简化代码,但在向下转型时需要特别注意是否存在转换类型与目标类型不同的情况,防止出现ClassCastException异常;匿名内部类本质是将继承/实现,方法重写和创建对象放在一行执行,也算是另一种方式的代码优化。