【Java】多态

多态

  一个对象多种形态,就称它为多态(父类型的引用指向子类型的对象)

  一个表示自己的类,一个表示自己的父类

多态特点:

  父类型的引用指向子类型的对象,表现的是子类的特征(把子类型的对象赋值给父类的对象)

  ps:编译看左边,运行看右边(多态编译时先看父类,运行时是表现new出来的子类的特征)

而我们又为什么要是有多态呢?

首先讲下封装和继承:

  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,他把实现的细节影藏起来了,比如你在java中去实现一个类,这个类中提供了一些功能方法,你只需要知道你需要传递什么样的参数,会达到什么样的效果,实现细节在类中定义好了(类似于一个保护罩,防止一个类被其他类随意访问,控制访问,隐藏信息跟实现细节,提高安全性,从而使得代码模块化)

  而继承可以扩展已存在的代码模块,而目的就是为了代码重用。

 而使用多态呢?

  消除类型之间的耦合关系,可以分为一个一个的子模块,提高了代码的扩展性。是OOP原则的一个具体的实现

--------------------------------------------------------------------------------------------------------------------

instanceof关键字

  在使用多态的时候,如果子类有父类没有的方法,先用instanceof关键字判断一下是否是指定的类,再用类强制类型转换(例:Dog dog = (Dog)anim),转换为父类

多态注意点(字段是不属于多态的)

  例 Animal  dog = new Dog();dog.name是使用Animal父类的,意思就是说,字段没有多态,只能调用字段前面对象类型的数据,编译时已经决定好了

实例

  先创建一个多态,使用时,如果父类没有子类的方法,先将父类强制转换为子类,才能使用子类的方法(多态时,只能调用父类方法,想调用子类方法,得先将父类转换为子类)

原文地址:https://www.cnblogs.com/Cccc4/p/13143607.html