java学习第十八课
暑期自学来到第十八课,本节课学习多态,经过前面继承、抽象类、接口的铺垫,理解多态概念没有太吃力,它也是面向对象三大特征的最后一块内容,日常编码里会频繁用到。
多态简单来说,就是同一个方法,不同对象调用会展现出不一样的执行效果。想要实现多态,需要满足几个前提:类之间存在继承或者类实现接口、子类重写父类的方法、使用父类引用指向子类对象。最直观的写法就是父类名字 变量名 = new 子类 ();。
父类引用虽然可以接收子类对象,但是存在使用限制:只能调用父类中定义好的方法,访问不了子类独有的新方法。如果想要使用子类特有的成员,就需要进行向下转型,把父类引用强制转回子类类型。而向上转型是自动完成的,日常使用很频繁,一般用来统一接收不同子类对象。
练习的时候我踩了不少小错误,最常见的就是随意向下转型,把无关的子类强行转换,直接出现程序报错;有时候分不清调用方法时执行的是父类还是子类内容,后来慢慢记住,编译看左边父类,运行看右边子类。一开始我也疑惑多态的实用价值,单独创建子类对象写法更简单,多此一举向上转型没有意义,多写案例后才明白,多态最大的用处就是简化代码,写通用方法时不用挨个定义不同子类参数,统一用父类接收,代码扩展性会变强。
和抽象类、接口结合对比来看,继承、重写、接口实现都是多态的实现载体,抽象类和接口更偏向制定标准,多态则是标准落地之后灵活使用的形式。
整体本节课概念不难,麻烦的是转型的规则和易错点。多态的核心就是统一标准、多样实现,简化代码、方便后期拓展。

浙公网安备 33010602011771号