`

Java 多态中的类型转换(instanceof)

    博客分类:
  • java
 
阅读更多

引用类型转换 
1、向上类型转换(自动/隐式类型转换),是小类型转化成大类型,不存在认了风险。即子类型对象也是父类型。 
2、向下类型转化(强制类型转化),大类型转化成小类型,存在一定风向。多态实例后,都可以向上类型转化,但是转化后,子类型对象间的互相转换就会存在一定风险。

如何规避风险? 
使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

    //创建子类对象
    Dog dog = new Dog();

    // 向上类型转换(类型自动提升),不存在风险
    Animal animal = dog;

    //风险演示  animal指向Dog类型对象,没有办法转化成Cat对象,编辑阶段不会报错,但是运行会报错
    Cat cat = (Cat)animal;// 1.编译时 按Cat类型  2. 运行Dog类型  类型不匹配。直接报错

 规避风险,提高程序安全性

   //创建子类对象
    Dog dog = new Dog();

    // 向上类型转换(类型自动提升),不存在风险
    Animal animal = dog;


    // 向下类型转换(存在一定风险) 我们可以强制转换
    if(animal instanceof Dog){

        Dog  dog2 = (Dog)animal; 

        System.out.println("转化类型成功");

    }else{

        System.out.println("向下类型转化失败"+animal.getClass());
    }


    //规避风险 (instanceof运算符)
    if(animal instanceof Cat){

        Cat cat  = (Cat)animal;
        System.out.println("转化类型成功");

    }else{

        System.out.println("转化类型失败"+animal.getClass());

    }

 

总结 : 
1> instanceof 的作用是 测试它左边的对修 是否 是它右边的类的实例。 
2> 在编写Java程序时,引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法,即使他实际所引用的对象确实包含该方法。如果需要让这个引用变量来调用它运行时类型的方法,必须使用强制类型转换把他转换成运行时类型。然而,在强制转换的过程中,是有可能出现类型强制转换异常(ClassCastException),规避他的方法也很简单,利用instanceof关键字来判断是否是本类对象,如果成立的化,再进行强制类型转换。 
instanceof 相当于oc语言中的 isMemberOfClass

 

转自:https://blog.csdn.net/qq_18505715/article/details/72631576

分享到:
评论

相关推荐

    java多态的总结

    4. instanceof关键字:用于判断对象是否是某个类或其子类的实例,是多态中常用的一个条件判断。 总的来说,Java的多态性是实现面向对象设计的重要工具,它使代码更加灵活、可扩展,同时也提高了代码的复用性。理解...

    1Java中的多态和类型转换(难点).docx

    ### Java中的多态和类型转换详解 #### 一、Java中的多态概念 **多态**(Polymorphism)是面向对象编程的一个核心特性,它允许一个接口代表多个类的行为。多态可以分为以下两个主要方面: 1. **父类型的引用可以指向...

    java 多态 经典讲解

    运行时类型识别(RTTI)通过`instanceof`关键字和`getClass()`方法提供了一种检查对象实际类型的方式,从而安全地执行向下类型转换。 #### 八、多态的陷阱:置换私有方法 在多态的场景下,私有方法不参与多态机制,...

    java多态小结

    ### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...

    Java中强制类型转换共2页.pdf.zip

    在Java中,类型转换是一项基本操作,尤其是在处理不同类型的数据时。本篇文章将详细探讨Java中的强制类型转换,这是Java编程中不可或缺的知识点。 Java的类型系统分为两大类:基本类型(如int、char、boolean等)和...

    Java-多态--学习笔记.docx

    Java中的多态性是面向对象编程的一个核心特性,它允许我们设计更加灵活和可扩展的代码。...这个例子展示了如何在Java中利用多态性实现动态行为,根据用户输入创建不同类型的动物对象,并调用它们的`makeSound()`方法。

    Tedu一段Java多态

    ### Java多态详解 #### 一、回顾与基础概念 多态是面向对象编程语言中的一个重要特性,允许将子类类型的指针赋值给父类类型的引用,这为程序提供了极大的灵活性。根据提供的内容,我们可以从以下几个方面进行深入...

    java继承 对象类型的转换 实例代码

    在Java编程语言中,继承是...总结来说,Java的继承允许子类继承父类的特征,提高代码复用性,而对象类型的转换则允许我们利用多态性,使代码更加灵活。在实际编程中,这两个特性是构建复杂系统和实现设计模式的基础。

    详解Java多态对象的类型转换与动态绑定

    在Java中,对象的类型转换分为向上转型和向下转型。向上转型是自动进行的,即将子类对象赋值给父类引用,这在处理具有共同特性的对象时非常有用。例如,`SuperClass superObj = new SonClass();` 这一行代码就实现了...

    Java中instanceOf关键字的用法及特性详解.rar

    总结来说,`instanceOf`在Java中是一个有用的工具,它允许我们在运行时检查对象的类型,但应谨慎使用,以保持代码的清晰和高效。在编写多态代码时,尽量依赖于接口和继承的性质,而不是依赖于`instanceOf`的检查。

    多态示例代码

    本示例代码主要展示了多态在实际编程中的应用场合,以及如何通过类型转换、`instanceof` 运算符、使用父类作为方法形参和返回值来实现多态。 1. **多态的定义** 多态性是指同一种行为或操作可以应用于不同的对象,...

    JavaJoop 多态 instanceof运算符

    多态的优势 实现思路/实现多态的三个要素 向上转型规则(子类到父类转换) 向下转型(父类到子类转换) 实现多态形式 instanceof运算符

    Java基础多态PPT学习教案.pptx

    【Java基础多态】在Java编程中,多态性(Polymorphism)是面向对象三大特性之一,它允许我们使用一个引用类型来调用不同的实现,使得代码更加灵活且易于扩展。多态能够提高代码的复用性,降低耦合度,是软件设计中的...

    288.286.JAVA基础教程_面向对象(中)-instanceof关键字的使用(288).rar

    1. **类型转换安全检查**:在进行强制类型转换前,我们通常会先使用`instanceof`检查目标对象是否可以被转换,以避免ClassCastException。例如: ```java if (obj instanceof String) { String str = (String)obj...

    Java面向对象的3大特征之多态

    此外,父类引用指向子类对象也是实现多态的关键,这在Java中表现为父类类型的引用变量实际存储子类对象的引用。 方法重载是静态多态的一种形式,它指的是在同一个类中定义多个同名方法,但是方法的参数列表不同。在...

    java代码-日常练习44,多态

    8. **instanceof运算符**:在多态场景下,`instanceof`运算符可以帮助我们判断对象的实际类型,以便在必要时进行类型转换或执行特定操作。 9. **异常处理**:在处理多态对象时,如果子类抛出的异常类型比父类声明的...

    Java 2023.7.12(方法重写/重载、多态、抽象类/方法、instanceof)

    在Java编程语言中,方法重写(Method Overriding)和重载(Method Overloading)、多态(Polymorphism)、抽象类(Abstract Class)与抽象方法(Abstract Method)以及`instanceof`关键字是核心的面向对象特性。...

    java对象类型转换和多态性(实例讲解)

    Java 对象类型转换是 Java 编程语言中的一种机制,允许开发者在不同的类之间进行类型转换。这种机制使得开发者可以更方便地使用继承和多态性来编写灵活的代码。 向上转型和向下转型是 Java 对象类型转换的两种主要...

    Java-多态与接口综合案例_USB接口设计

    Java中的多态性是面向对象编程的一个核心特性,它允许我们使用父类类型的引用操作子类的对象,从而实现代码的灵活性和可扩展性。多态存在的三个基本条件是:继承、方法重写以及父类引用指向子类对象。在实际应用中,...

    Java 实例 - instanceof 关键字用法源代码-详细教程.zip

    总结来说,`instanceof`关键字是Java中用于运行时类型检查的重要工具,它可以帮助开发者确保代码的正确性和灵活性。通过结合实例代码,你可以更深入地理解`instanceof`的工作原理及其在实际项目中的应用。本教程提供...

Global site tag (gtag.js) - Google Analytics