Java基础入门之多态和对象类型转换

Wesley13
• 阅读 874

点击上方“ Java进阶学习交流 ”,进行关注

后台回复“Java”即可获赠Java学习资料

人随沙岸向江村,余亦乘舟归鹿门。

前面几篇文章用Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制一篇文章带你了解this关键字和单例模式Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下Java知识中的接口及其继承知识,一起来看看吧。

一、多态

1.假设实现一个动物发出的叫声方法,我们知道不同的动物,它们的叫声是不一样的。当在方法中传入一个参数类型,例如猫的叫声、狗的叫声。在同一个方法,当参数不同它们的执行结果各不相同,这就是多态。

2.多态是把子类对象赋给父类引用时,调用重写的方法时,表示的是子类的行为。

3.怎么实现多态例子

//定义接口Fruit

运行的结果是:

我是一个樱桃!重量为:66.0g

从上面代码中,定义了一个Fruit接口,定义了抽象方法info()。定义Cherry类和Apple类实现Fruit接口,定义变量weight属性和实现info()方法。“Fruit f1=new Cherry()、Fruit f2=new Apple()”实现子类对象赋给父类引用,调用fruitInfo()方法,父类引用了两个子类对象分别传入f1和f2参数。

二、对象类型转换

1.子类对象是可以自动转换成父类。

2.父类转换成子类对象就需要强制转换。

例如:

//定义接口Fruit

运行的结果是:

Java基础入门之多态和对象类型转换

从上面可以看出编译出错了,调用fruitInfo()方法传入Cherry对象,方法参数是Fruit类型的,把Cherry的子类当作父类使用导致程序编译出现错误,程序在运行到f.pro()这行代码发现这个方法没有定义。因为传入的是Cherry类,在Cherry类中定义了pro()方法需要强制转换才可以运行,就是把Fruit类型变量强制转换成Cherry类型。

修改后代码如下所示:

//定义静态方法fruitInfo(),接受一个Fruit参数f

再次运行的结果是:

我是一个樱桃!重量为:66.0g

三、instanceof关键字


1.instanceof关键字作用

判断一个实例对象是否属于一个类,它的语法如下:

对象 instanceof 类

2.在进行引用类型转换前先使用instanceof关键字判断,例如:

if( f instanceof Cherry){   //如果f指的是Cherry对象类型时,返回的是true。

四、总结


本文主要介绍了多态、对象类型转换、instanceof关键字。

多态是子类对象赋给父类引用时,调用重写的方法时,表示的是子类的行为。通过怎么实现多态例子帮助理解这个用法。

对象类型转换是子类对象是可以自动转换成父类、父类转换成子类对象就需要强制转换。

instanceof关键字用来判断一个实例对象是否属于一个类,希望大家通过本文的学习,对你有所帮助!

**********---**--****-------------- End **********---**--****--------------

往期精彩文章推荐:

Java基础入门之多态和对象类型转换

欢迎大家点赞,留言,转发,转载,****感谢大家的相伴与支持

想加入Java学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

本文分享自微信公众号 - Java进阶学习交流(java_xianghong)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
Java基础入门篇——for循环
点击上方“Java进阶学习交流”,进行关注后台回复“Java”即可获赠Java学习资料今日鸡汤秋风吹不尽,总是玉关情。前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)(https://www.oschina.net/ac
Wesley13 Wesley13
3年前
Java基础入门篇——方法和重载
点击上方“Java进阶学习交流”,进行关注后台回复“Java”即可获赠Java学习资料今日鸡汤何日平胡虏,良人罢远征。前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)(https://www.oschina.net/ac
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
Java基础入门篇(四)——Java变量数据类型和基本数据类型
点击上方“Java进阶学习交流”,进行关注后台回复“Java”即可获赠Java学习资料今日鸡汤一枝红艳露凝香,云雨巫山枉断肠。前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)(https://www.oschina.net
Wesley13 Wesley13
3年前
Java基础入门篇(六)——Java运算符
点击上方“Java进阶学习交流”,进行关注后台回复“Java”即可获赠Java学习资料今日鸡汤借问汉宫谁得似,可怜飞燕倚新妆。前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)(https://www.oschina.net
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这