摘要:如果编译时类型和运行时类型不一致,就可能出现所谓的多态。上面代码中,引用变量比较特殊,它的编译时类型是而运行时类型是当调用该引用变量的方法时,实际执行的是类中覆盖后的方法,这就可能出现多态了。
Java引用变量有两个类型,一个是编译时类型,一个是运行时类型。
编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
如果编译时类型和运行时类型不一致,就可能出现所谓的多态。
BaseClass testObj = new SubClass(); testObj.test();
上面代码中,引用变量比较特殊,它的编译时类型是BaseClass,而运行时类型是SubClass,当调用该引用变量的test()方法时,实际执行的是SubClass类中覆盖后的test()方法,这就可能出现多态了。
因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋给一个父类引用对象,无需任何类型转换,或者被称为向上转型,向上转型由系统自动完成。
上面testObj引用变量的编译时类型是BaseClass,而运行时类型是SubClass,当运行时调用该引用变量的方法时,其方法和行为总是表现出子类方法的行为特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量、调用同一个方法时呈现出不同的行为特征,这就是多态。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68519.html
摘要:概念所谓多态,就是指一个引用变量类型在不同的情况下的多种状态。需进行强制转换有风险,最好使用进行判断。继承在多态中必须存在有继承关系的子类和父类。在中有两种形式可以实现多态继承和接口。 概念 所谓多态,就是指一个引用变量(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。多态性是对象多种表现形式的体现 多态性严格来说有两种描述形式:...
摘要:当我们对一些函数发出调用的消息时,这些函数会返回不同的执行结果,这是多态性的一种体现,也是很多设计模式在中可以用高阶函数来代替实现的原因。 PS:上一篇文章发表之后,很多朋友关注了本人的思否和掘金的博客,虽然关注的朋友还有有限,但足够让我把自己在技术上的问题积累分享给大家,也希望大家能够喜欢,同时能动一动手指,给一颗心(赞),博主会持续更新下去 多态 本文是《javascript设计模...
摘要:中的多态引用的多态父类的引用是可以指向子类对象报错方法多态动物具有吃的能力狗具有吃肉的能力狗具有看门的能力父类的引用是可以指向子类对象报错 java中的多态 showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...
摘要:在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。 1.再论向上转型 多态作用:消除类型之间的耦合关系. 2.转机 绑定:将一个方法调用同一个方法主体关联起来. 前期绑定:在程序执行前就进行绑定(面向过程语言默认绑定方式). 后期绑定:也叫动态绑定或运行时绑定,在运行时根据对象的类型进行绑...
摘要:为什么不是面向对象不是面向对象,因为它包含个原始数据类型,例如。自定义类加载器继承的自定义类加载器。可以像下面这样指定参数面试题面向对象,类加载器,基础概念它们的关系如下启动类加载器,实现,没有父类。自定义类加载器,父类加载器为。 1. 为什么说Java是一门平台无关语言? 平台无关实际的含义是一次编写到处运行。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作...
阅读 2477·2023-04-25 21:41
阅读 1649·2021-09-22 15:17
阅读 1924·2021-09-22 10:02
阅读 2434·2021-09-10 11:21
阅读 2577·2019-08-30 15:53
阅读 997·2019-08-30 15:44
阅读 950·2019-08-30 13:46
阅读 1129·2019-08-29 18:36