位置: 编程技术 - 正文

【java的多态性】(java中的多态性)

编辑:rootadmin
java的多态性是面向对象的三大特性之一.(封装,继承,多态),多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码, 让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。java多态分为:1.方法的重载与重写。 重载:同类中返回&#;和函数名相同,而参数列表不同的两个方法。 重写:是子类的方法覆盖父类的方法,要求方法名和参数都相同2.对象的多态性在这里我们主要介绍对象的多态性我自己的理解是小转大自动转换,大转小需要强制转换。父类大于子类。(1)父类引用指向子类实例public class Mystring { public static void main(String[] args) { //父类大,子类小,小转大自动转换,只能调用父类也有的方法 person temp=new student();//父类的引用指向子类对象 temp.say(); person temp1=new teacher(); temp1.say(); } } //抽象类 abstract class person { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void say();//抽象方法 } //学生类 class student extends person//继承person类 { //实现抽象方法 public void say() { System.out.println("我是学生。。。。"); } } //老师类 class teacher extends person//继承person类 { public void say() { System.out.println("我是老师。。。。"); } //扩展方法 public void sayHello() { System.out.println("Hello,我是老师。。。。"); } } 复制代码 (2)子类对象指向父类引用public class Mystring { public static void main(String[] args) { //父类大,子类小,自动转换,只能调用父类也有的方法 person temp=new student();//父类的引用指向子类对象 temp.say(); person temp1=new teacher(); temp1.say(); //------------调用teacher的扩展方法sayHello() //父类person没有sayHello方法,不能直接temp1.sayHello() //子类小于父类,需要强制转换 teacher temp3=(teacher)temp1; temp3.sayHello(); } } //省略类的定义 复制代码执行结果: 我觉得记住小转大自动转换,大转小需要强制转换。父类大于子类就很好理解既然父类可以自动转化为子类,那我们可以利用这特性解决一个经常遇到问题public class Mystring { public static void main(String[] args) { student temp=new student(); say(temp); teacher temp1=new teacher(); say(temp1); } public static void say(student temp) { temp.say(); } public static void say(teacher temp1) { temp1.say(); } //省略类的定义 } 复制代码我们发现say()由于需要的参数不同,所以重载了两份。这样写,要是类很多,那不要重载很多份。这里我们使用对象的多态就能很好的解决。把代码改为:public class Mystring { public static void main(String[] args) { person temp=new student(); say(temp); person temp1=new teacher(); say(temp1); } public static void say(person temp) { temp.say(); } //省略类的定义 } 复制代码当然这样写的话,调用的方法只能是父类也有的方法,这里能性是因为父类也有say()方法。为了解决这一问题,我们引入关键字instanceof。instanceof的基本语法为:对象 instanceof 类型-----------返回boolean&#;用来判断一个对象是否属于某和类的实例,是就返回true,否则返回false下面我们在say()方法里调用teacher的扩展方法sayHello()。student和person类都没用该方法,上面代码肯定报错。这是我们可以将代码改为:public class Mystring { public static void main(String[] args) { person temp=new student(); say(temp); person temp1=new teacher(); say(temp1); } public static void say(person temp) { //如果是teacher对象就强制转换为teacher(大转小) if(temp instanceof teacher) { teacher ok=(teacher)temp; ok.sayHello(); } } //省略类的定义 } 复制代码父类大转小自动转换,让我想起了所有类的父类Object类,它当然是最大的啦。所有我们代码当然还可以改为:public class Mystring { public static void main(String[] args) { person temp=new student(); say(temp); person temp1=new teacher(); say(temp1); } //使用Object类 public static void say(Object temp) { //如果是teacher对象就强制转换为teacher(大转小) if(temp instanceof teacher) { teacher ok=(teacher)temp; ok.sayHello(); } } //省略类的定义 } //抽象类 复制代码这篇博客是对我学习java多态的一个总结,也拿出来和大家分享,有什么错误还望指正。

推荐整理分享【java的多态性】(java中的多态性),希望有所帮助,仅作参考,欢迎阅读内容。

【java的多态性】(java中的多态性)

文章相关热门搜索词:简述java多态性,java中的多态性,java的多态性举例,什么是java的多态性,请写一段实例代码,java的多态含义,java多态性的含义,java中的多态性,java多态性的含义,内容如对您有帮助,希望把文章链接给更多的朋友!

Android通知栏点击无法启动Activity的问题 最近在使用通知栏通知用户,用户点击通知栏后跳转到相应的界面.但是发现一个问题,在某些机型比如三星note2,OPPOfind7上无法启动.但是在其他手机上正常.

【Java的String详解】 Java的String类在开发时经常都会被使用到,由此可见String的重要性。经过这次认真仔细的学习了java的String类。发现了自己以前开发中对String使用的不足,

【java对象比较器和克隆】 一.比较器Comparable和Comparator上一篇博客介绍了工具类Arrays工具类。我们可以对基本类型的数组调用Arrays.sort()函数来进行数组的排序。排序操作在日常开

标签: java中的多态性

本文链接地址:https://www.jiuchutong.com/biancheng/383294.html 转载请保留说明!

上一篇:面向对象设计六大基本原则-以Volley为例(面向对象设计六大原则)

下一篇:Android通知栏点击无法启动Activity的问题(Android通知栏点击打开安装)

  • 税务迁移麻烦吗
  • 不动产经营租赁服务包括哪些
  • 税额和税款的区别
  • 收到生育险报销会计怎么写摘要呢
  • 房地产企业毛利率计算公式是什么
  • 对方发票丢失怎么办理
  • 科技人员股权奖励
  • 清理往来账管理办法
  • 长期负债平均余额怎么算
  • 折旧四种方法
  • 公司代扣社保为什么是400多余的钱
  • 一般纳税人城建税怎么计算
  • 某企业原材料采用实际成本核算,2019年6月
  • 计提结转本月城建税怎么做账?
  • 费用科目如何结转
  • 管理会计的目标包括多选题
  • 共用水电费税前扣除比例
  • 股票投资收益需要缴纳增值税吗
  • 免税企业减免所得税政策
  • 当前一般纳税人增值税税率
  • 公司贷款评估费的做账
  • ukey抄报税全流程视频教程
  • 什么叫净资产收益率
  • 其他综合收益的含义
  • 补缴城镇土地使用税会计分录怎么做
  • 华为mate40怎么打开开发者选项
  • 在建工程会计账务处理是否有利润表
  • 建筑企业收到预收账款要交增值税吗
  • iphone7plus怎么设置5g网络
  • 增值税税控系统折旧
  • 系统搜索力
  • 退休返聘人员如何辞职
  • 融资性租赁的优缺点
  • rnbrcache.exe是什么意思
  • 货物品种不太多而数量又相对较大
  • php声明一个类
  • 生产企业免抵退税实例
  • springbootssm
  • 委托贷款业务是资产业务吗
  • tensorflow2安装
  • 小微企业免教育附加
  • 企业所得税包含在税金及附加里面吗
  • 原材料入账价值包括代垫运费吗
  • 不开票销售收入怎么做账务处理
  • 销售返利的会计分录处理
  • css的flex:1
  • 劳务维修费怎么开票
  • Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍
  • 物业管理企业会计核算的特点如何?
  • 资产处置损益要写明细账吗
  • 弥补亏损怎么做分录
  • 注册资本与实收资本是否一致
  • 银行手续费如何做账务处理
  • 股票质押式回购交易是什么意思
  • 房地产企业销售现房是否预缴增值税
  • 计提折旧,生成折旧分摊凭证步骤
  • 小规模纳税人劳务费税率
  • 经营性应付项目减少对经营活动现金
  • sqlserver存储过程在哪
  • 64位win7怎么释放为硬件保留的内存?
  • Linux系统磁盘分配
  • 怎么简单快速的拼成魔方六面
  • 趣谈linux系统
  • linux 静态库
  • centos挂载lun
  • win10预览版好吗
  • Windows 7 Apache下计算机无法访问局域网网站的解决方法
  • java的理解
  • 利用职务之便谋取私利是什么罪
  • jquery文件上传进度条
  • shell去重计数
  • 关于javascript的说法
  • jquery添加节点
  • 最精简的年终工作总结
  • js判断时间差
  • HTTP之Range理解
  • 以下关于android应用程序的目录结构描述中,不正确的是
  • 所得税 营业税计算公式
  • 如何查询公司的电话号码
  • 城市建设维护税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设