Java之多态

①    什么是多态?
    多态(polymorphism)是具有表现多种形态的能力的特征。同一个实现接口,使用不同的实例而执行不同的操作

②    什么是向上转型?语法要求是什么?
   1、 将一个父类的引用指向一个子类对象,称为向上转型(upcasting),此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法,此时通过父类引用变量无法调用子类特有的方法
    <父类型> <引用变量> = new <子类型>()

  自动类型转换 
    
③    什么是向下转型?语法要求是什么?
    将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型(downcasting),向下转型可以访问子类特有的方法。必须转换为父类指向的真实子类类型,否则将出现类型转换异常ClassCastException

  强制类型转换
    
④    实现多态的三个条件是什么?
    1、继承的存在(继承是多态的基础,没有继承就没有多态)
    2、子类重写父类的方法(多态下调用子类重写后的方法)
    3、父类引用变量指向子类对象(子类到父类的类型转换)
    
⑤    使用多态有什么好处?
    减少类中的代码量,可以提高代码的可扩展性和可维护性
    
◆    instanceof运算符的作用和语法格式?
    判断一个对象是否属于一个类或者实现了一个接口
    boolean result = object instanceof class(interface)

  注:使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误,instanceof通常和强制类型转换结合使用

时间: 2024-11-06 19:52:46

Java之多态的相关文章

Java中多态的一些简单理解

什么是多态 1.面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 2.多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 3.实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 4.多态的作用:消除类型之间的耦合关系. 5.现实中,关于多态的例子不

个人对Java中多态的一些简单理解

什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 多态的作用:消除类型之间的耦合关系. 现实中,关于多态的例子不胜枚举. 下面是多态

JAVA泛型多态

先度娘一下多态的概念: 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误: 如果有,再去调用子类的该同名方法. (来源:http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html) 那如果要在Java中泛型做多态如何使用

从虚拟机指令执行的角度分析JAVA中多态的实现原理

从虚拟机指令执行的角度分析JAVA中多态的实现原理 前几天突然被一个"家伙"问了几个问题,其中一个是:JAVA中的多态的实现原理是什么? 我一想,这肯定不是从语法的角度来阐释多态吧,隐隐约约地记得是与Class文件格式中的方法表有关,但是不知道虚拟机在执行的时候,是如何选择正确的方法来执行的了.so,趁着周末,把压箱底的<深入理解Java虚拟机>拿出来,重新看了下第6.7.8章中的内容,梳理一下:从我们用开发工具(Intellij 或者Eclipse)写的 .java 源程

Java:多态乃幸福本源

01 多态是什么 在我刻板的印象里,西游记里的那段孙悟空和二郎神的精彩对战就能很好的解释“多态”这个词:一个孙悟空,能七十二变:一个二郎神,也能七十二变:他们都可以变成不同的形态,但只需要悄悄地喊一声“变”. Java的多态是什么呢?其实就是一种能力——同一个行为具有不同的表现形式:换句话说就是,执行一段代码,Java在运行时能根据对象的不同产生不同的结果.和孙悟空和二郎神都只需要喊一声“变”,然后就变了,并且每次变得还不一样:一个道理. 多态的前提条件有三个: 子类继承父类 子类覆盖父类的方法

黑马程序员——Java基础---多态、内部类、异常、包

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.多态 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的对象赋值给父类类型的引用. 猫这个对象对应的类

java进阶 - 多态

运行时多态性是面向对象程序设计代码重用的一个最强大机制,Java多态性的概念也可以被说成"一个接口,多个方法".Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制. 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overri

黑马程序员——java基础--多态

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 模板方法设计模式: 解决的办法:当功能内部一部分是现实确定,一部分是现实不确定的,这时间不可把不确定的部分暴漏出去,让子类实现. 实例:统计一个程序的的运行时间 思路:程序的结束时间减去程序的开始时间 abstract class Gettime{ public final void getTime(){//这段功能用final限制 long start = System.currentTim

Java(多态)动手动脑

1> 请看以下"变态"的类(参看示例ParentChildTest.java) 上述代码的特点是: 子类和父类定义了一模一样的字段和方法 运行以下测试代码 1. 上边的程序运行结果是什么? 2. 你如何解释会得到这样的输出? 第一个100:是parent调用PrintValue方法输出parent类中myValue值为100: 第二个200:是child调用PrintValue方法输出child类中myValue值为200: 第三个200:是parent = child,将子类对

Java有关多态类的小程序

1.使用instanceof运算符判断一个对象是否可以转换为指定的类型: 代码: public class TestInstanceof { public static void main(String[] args) { //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类 //但hello变量的实际类型是String Object hello = "Hello"; //String是Object类的子类,所以返回true. Sys