位置: 编程技术 - 正文

【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通知栏点击打开安装)

  • 所得税费用为负数
  • 工业企业销售收入税率
  • 销售无形资产增值税纳税义务发生时间
  • 视同内销补税的财务处理
  • 两地拿工资怎么扣个税
  • 用现金购买办公设备会计分录
  • 开出银行汇票支付手续费
  • 结转安装费用的会计分录
  • 收到基金计入什么科目
  • 营业范围之外的产品可以出售吗
  • 未分配利润的计税基础是
  • 企业会主动对税吗
  • 主营业务税金及附加包括印花税吗
  • 融资租赁 车辆
  • 进项发票与销项发票差额是企业毛利润吗
  • 临时人员工资需交税吗
  • 营改增后房产税计税依据及计算方式
  • 承兑到期不兑付应起诉哪方?
  • 季度所得税报表怎么填
  • 销售商品收到商业汇票属于什么科目
  • 归还法人前期垫付款项
  • 超出经营范围开发票
  • 空调计入什么会计科目二级
  • 非经营性单位支出费用是什么
  • 什么是资产减值准备计提
  • 企业党建活动经费管理办法的规定
  • safari浏览器怎么快进
  • linux文件权限控制
  • PHP:mb_internal_encoding()的用法_mbstring函数
  • 总分机构什么时候备案
  • PHP:oci_field_is_null()的用法_Oracle函数
  • 差额征税账务处理规定
  • 年底有留抵税额怎么结转
  • api接口是干嘛的
  • 短期投资属于短期资产吗
  • 完美解决怠速抖动加油就平稳
  • 装货费用
  • mongodb数据库的层次结构
  • python3 tcp
  • 发票管理办法是法律吗
  • 营改增小规模纳税人认定标准
  • 印花税的缴纳
  • sql server 2012安装无网络可以OK?
  • 如何把access数据库导入excel
  • c#窗体类属性和方法
  • 小规模企业申报哪些税
  • jdbc连接mysql数据库代码
  • 个体户定额征收后还要报税吗
  • 转让无形资产或其他资产
  • 软件研发的整个流程
  • 畜类生产性生物资产计算折旧的最低年限
  • 税务机关如何对个人股东股权财务报表审核
  • 无形资产的累计折旧
  • 新政府会计制度下,属于资产类科目的是
  • 实际费用以什么为准
  • 留抵税额和待抵扣进项税额区别
  • 挂靠人员社保缴费分录如何做?
  • 应付账款和预付账款都属于负债类科目
  • 软件测试收费标准2019
  • 金蝶凭证做错了已经入账怎么更正
  • sql server 错误
  • sql高级语句实例
  • xp不能安装win8
  • centos svn服务器搭建web
  • vmware左侧的虚拟机名称不见了
  • win7如何设置共享
  • win8鼠标右键没反应
  • mac图形界面
  • centos elk
  • win8.1无线
  • 在Linux系统中安装MySQL
  • opengl二维绘图函数
  • shell脚本用法
  • kill某个进程
  • js获取上传文件的文件名
  • jquery增加
  • 河南个人医保缴费查询
  • 江苏省社科院院士名单
  • 西安车辆购置税在线交费
  • 税务系统领发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设