Java_多态

Posted 依然耀眼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_多态的主要内容,如果未能解决你的问题,请参考以下文章

No2_1.接口继承多态_Java学习笔记_接口

15_Java筑基之Object类多态

15_Java筑基之Object类多态

Java_多态

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_9_接口的私有方法定义

java_第4章 继承与多态_第4周编程题_将MP3媒体类型存放进Database