Java教程

Java_多态

本文主要是介绍Java_多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

多态

同一个对象可以用多种形态(子类类型、父类类型)进行表示。

多态的前提
1.要有继承、实现的关系
2.要有方法重写
3.父类/接口接收子类对象

 Animal a = new Dog(); //Animal是Dog的父类  

 Usb u = new Mouse(); //Usb是Mouse的接口 

 

多态的成员访问特点

1.成员变量的访问特点
编译看左边(父类),运行也看左边(父类)
大白话:父类有就用父类的,父类没有就报错了

2.成员本方法的访问特点
编译看左边(父类),运行也看右边(子类)
大白话:子类复写父类方法,就执行子类的方法。

一句话总结:只有复写的方法看子类,其他的都看父类,父类没有就报错。

 

多态的好处和弊端

1.好处:提高了代码的扩展性
把方法的参数写成父类、接口,调用方法时可以传递任意的子类对象。

2.弊端:不能调用子类特有的方法。如果想调用可以进行强转(向下转型)

 

多态的转型

1 1.向上转型
2     Animal a=new Dog(); //多态的写法,就是向上转型
3 
4 2.向下转型
5     //判断变量a具体是什么类型
6     if(a instanceof Dog){
7         Dog dog=(Dog)a;
8         dog.swimming();
9     }

【注意:多态的转型并不是随意的,它是一个还原的动作。原本是什么类型,才能转换为什么类型】

3.多态转型可能会遇到的问题

 ClassCastException: 多态的转型出现的问题,类型转换错了 

  NullPointerExeption: 一个对象或者一个数组为null,使用null去调用方法或者访问元素。 

 

 

 

这篇关于Java_多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!