java面向对象.day24(instanceof和转换)

2024-04-18 00:28

本文主要是介绍java面向对象.day24(instanceof和转换),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

instanceof的作用:判断两个类是否存在父子关系

instanceof 是一个用于确定对象是否由特定类或其子类创建的运算符。如果对象是由该类或其子类创建的,则 instanceof 返回 true,否则返回 false

instanceof代码示例:

//父类
public class Person {
}
//子类01
public class Student extends Person {
}
​
//子类02
public class Teacher extends Person {
}
//使用
public class Application {public static void main(String[] args) {//父>子//object > String//object > Person > Teacher//object > Person > StudentObject object = new Student();System.out.println(object instanceof Student);//true//object instanceof Student===object和Student是否满足父子类型System.out.println(object instanceof Person); //trueSystem.out.printin(object instanceof object); //trueSystem.out.println(object instanceof Teacher);//FalseSystem.out.println(object instanceof Istring); //Falsesystem.out.println("=======================");Person person = new Student();System.out.println(person instanceof student); //trueSystem.out.println(person instanceof Person); //trueSystem.out.println(person instanceof 0bject); //trueSystem.out.println(person instanceof Teacher); //False//system.out.printLn(person instanceof string);//编译报错!System.out.println("=========================");Student student = new Student();System.out.println(student instanceof Student); //truesystem.out.println(student instanceof Person); //trueSystem.out.println(student instanceof 0bject); //true//System.out.println(student instanceof Teacher);//编译报错//System.out.printLn(student instanceof String);//编译报错!
​}
}
​

类型转换

(基本类型转换)数据转换:高转低==》强转 || 低转高==》不用强转

类型转换:父(高)===》 子(低)强转 || 子(低)===》父(高)不用强转

//父类
public class Person {public void run(){System.out.println("run");}
}
​
//子类01
public class Student extends Person {public void go(){System.out.println("go");}
​
}
​
//使用
public class Application {public static void main(String[] args) {//高(Person)===============低(Student)Person fu = new Student();//由于go是Student类的方法,所以父类fu无法调用go方法//所以将fu强转成student类型再调用go方法((student)fu).go();
​Student zi = new Student();//go方法是子类型Student的方法,所以zi可以直接使用go方法zi.go();//zi转换成Person类型可以直接转换Person person = zi;//但是zi转换后会丢失Student类型的方法所以不能再直接使用go方法((Student)person).go();//zi类型转换成person后可以直接使用run方法,但无法直接使用go方法person.run();}
}
​
​

一部分总结:

  1. 多态存在条件:父类引用指向子类的对象

  2. 父类转子类,需要强转,例如:Student zi = (Student)fu

  3. 子类转父类,不需要强转,例如:Person person = zi;

  4. 为什么要转换:方便方法调用,减少重复代码

这篇关于java面向对象.day24(instanceof和转换)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913282

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis