java三大特性--多态(1)
2016-11-17 22:52
183 查看
定义
对象具有多种形态
类型
引用的多态:
父类的引用指向自身对象
父类的引用指向子类对象
方法的多态:
创建本类对象时,调用的方法为本类方法。
创建子类对象时,调用的方法为子类继承的或者重写的方法。不允许调用子类独有的方法。
![](http://img.blog.csdn.net/20161117182701526)
多态的优势
多态的出现大大的提高了程序的扩展性
表现形式
java中的多态的表现形式一般分为两种:overriding(重写)和overloading(重载)
如果在子类中定义某方法与其父类有相同的名称和参数,我们就可以这样说此方法被子类重写overriding,子类中的对象使用这个方法的时候,将调用子类中中的定义,此时对子类来说,父类中的方法定义如同被”屏蔽”了一样。如果在一个类中定义了多个同名的方法,它们或有不同的参数或有不同的参数类型,则称为方法的重载overloading。并且overloading的方式是可以改变返回值类型的。
引用类型转换
向上类型转换,即隐式/自动类型转换,是小类型转换大类型
向下类型转换,即强制类型转换,是大类型转换小类型
使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题
对象具有多种形态
类型
引用的多态:
父类的引用指向自身对象
父类的引用指向子类对象
TrafficTool traffictool=new TrafficTool();//父类的引用指向本身类对象 TrafficTool traffictool1=new BMW();//父类引用指向子类对象
方法的多态:
创建本类对象时,调用的方法为本类方法。
创建子类对象时,调用的方法为子类继承的或者重写的方法。不允许调用子类独有的方法。
public class BMW extends TrafficTool{ int width; int height; public void BMW(){ System.out.println("这是子类!!"); } public void drive(){ System.out.println("宝马汽车可以开!!"); } public void bmw(){ System.out.println("这是子类独有的方法!!"); } }
多态的优势
多态的出现大大的提高了程序的扩展性
表现形式
java中的多态的表现形式一般分为两种:overriding(重写)和overloading(重载)
如果在子类中定义某方法与其父类有相同的名称和参数,我们就可以这样说此方法被子类重写overriding,子类中的对象使用这个方法的时候,将调用子类中中的定义,此时对子类来说,父类中的方法定义如同被”屏蔽”了一样。如果在一个类中定义了多个同名的方法,它们或有不同的参数或有不同的参数类型,则称为方法的重载overloading。并且overloading的方式是可以改变返回值类型的。
引用类型转换
向上类型转换,即隐式/自动类型转换,是小类型转换大类型
向下类型转换,即强制类型转换,是大类型转换小类型
BMW bmw=new BMW(); TrafficTool traffictool=bmw;//自动类型提升,向上类型转换 BMW bmw2=(BMW)traffictool;//强制类型转换,向下类型转换
使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题
public static void main(String[] args) { TrafficTool traffictool=new BMW();//父类引用指向子类对象 if(traffictool instanceof BMW){//父类引用能否转换子类类型 BMW bmw2=(BMW)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以可以强制转换 }else{ System.out.println("无法进行类型转换!"); } if(traffictool instanceof QQ){ QQ qq2=(QQ)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以不可以转成子类qq2对象 }else{ System.out.println("无法进行类型转换,转换成QQ类型"); } }
相关文章推荐
- java提高篇(三)-----理解java的三大特性之多态
- java三大特性:封装、继承、多态
- java的三大特性之多态
- Java语言的三大特性即是:封装、继承、多态
- java提高篇(三)-----理解java的三大特性之多态
- Java三大特性分析-多态
- (转)java提高篇(四)-----理解java的三大特性之多态
- I学霸官方免费教程十五:Java面向对象三大特性之多态
- java提高篇(三)-----理解java的三大特性之多态
- Java学习第六课--面向对象的三大特性(封装、继承和多态)
- 深入理解Java面向对象三大特性 封装 继承 多态
- java提高篇(三)-----理解java的三大特性之多态
- java提高篇(四)-----理解java的三大特性之多态
- java三大特性之继承和多态
- java基础三大特性——封装、继承与多态
- java 三大特性 封装 继承 多态
- java提高篇(四)_理解java的三大特性之多态 转自 http://cmsblogs.com
- java提高篇(三)-----理解java的三大特性之多态
- 关于java三大特性 封装 继承 多态
- Java三大特性之一之多态