instanceof 和 类型转换

news/2025/1/29 8:17:40/文章来源:https://www.cnblogs.com/GXEndeavor/p/18692900

instanceof 和 类型转换

public class Person {public void run(){System.out.println("Person run");}}/*//一个对象的实际类型是确定的//new Student();//new Person();//可以指向的引用类型不确定:父类的引用指向子类// Student 能调用的方法都是自己的或者从父类继承过来的Student s1 = new Student();//父类可以指向子类,但是不能调用独属于子类的方法Person s2 = new Student();// 根目录类Object s3 = new Student();//对象能执行那些方法,主要看对象左边的类型,和右边关系不大s1.run();s2.run();//子类重写的父类的方法,执行子类方法s1.eat();// ((Student) s2).eat(); 强制类型转换 高(父) ——> 低(子)// s2.eat; 无法执行*//*
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,需要有继承关系,否则会出现 类型转换异常 ClassCastException!
3.存在条件:有继承关系;方法需要重写 ; 父类引用指向子类对象! father f1 = new son();
PS:以下情况不能被重写① static 修饰的方法 ,属于类,不属于实例② final 常量③ private 修饰的方法*/
public class Student extends Person{public void go(){System.out.println("Student Go");}}
public class Teacher  extends Person {
}
public class Application {public static void main(String[] args) {// 类型之间的转换:父  ——>  子// 高(父)——————————————> 低(子)Person student = new Student();//Student 将这个对象转换成 Student 类型,我们就可以使用 Student类型的方法了Student obj = (Student) student;obj.go(); //强制转化表达类型①((Student) student).go();//强制转换表达类型②// 子类转换成父类,可能会丢失自己本来的一些方法Student student01 = new Student();student01.go();Person person = student01; // 低 自动转换为 高// person.go 无法执行/*1.父类引用指向子类对象2.把子类转换为父类,向上自动转型,可能会导致方法缺失3.把父类转换为子类,向下转型,需要强制转换4.方便方法的调用,减少代码的重复*//*// Object > String// Object > Person > Student// Object > Person > Teacher// System.out.println(X instanceof Y); 编译能否通过,取决于 X 和 Y 之间是否存在父子关系Object object = new Student();System.out.println(object instanceof Student);//trueSystem.out.println(object instanceof Person);//trueSystem.out.println(object instanceof Object);//trueSystem.out.println(object instanceof Teacher);//falseSystem.out.println(object instanceof String);//falseSystem.out.println("=====================================");Person person = new Student();System.out.println(person instanceof Student);//trueSystem.out.println(person instanceof Person);//trueSystem.out.println(person instanceof Object);//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 Object);//true//System.out.println(student instanceof Teacher);//编译失败//System.out.println(student instanceof String);//编译失败*/}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【docker】自建 docker 镜像加速

1. 背景 由于神秘原因,国内用户逐渐无法访问 Docker Hub 仓库。这对于开发者来说是个不小的难题。而这个解决方案是通过赛博菩萨 cloudflare(简称 CF)中转请求,解决访问限制并加速访问。刚好之前分享了如何获取免费域名,今天就来分享一下如何用免费域名在CF部署自己的 doc…

hive--MySQL8错误--ERROR 1410 (42000): You are not allowed to create a user with GRANT

错误展示:解决办法: create user hadoopguide@localhost identified by hadoopguide; grant all privileges on hadoopguide.* to hadoopguide@localhost with grant option; 效果图:错误原因: MySQL 8.0 及以上版本不允许在授予权限时隐式创建用户。所以显式创建用户后再授…

【Linux】Linux一键切换镜像源,告别慢速下载,国内镜像让你飞起来!

简介 本文教你如何通过一键切换 Linux 镜像源,快速提高系统软件包的下载速度,告别“慢”的困扰,轻松提升体验。 项目地址:https://github.com/SuperManito/LinuxMirrors 官方文档:https://linuxmirrors.cn/开头 Linux 系统在安装和更新软件时,经常会遇到速度慢的问题,尤…

day05-面向对象编程:基础语法

Java面向对象:类的基础语法[ 任务列表 ] 1.面向对象快速入门 2.什么是面向对象 3.类的基础语法——构造器 4.类的基础语法——this关键字 5.类的基础语法——封装 6.类的基础语法——javabean 7.类的基础语法——static 8.其他———————————————————————…

【docker】通过Docker一键部署群晖NAS!支持自定义内存和CPU、多磁盘挂载、KVM加速!

声明 文中所涉及的技术、思路和工具仅供以学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。如有需要,请购买正版软件。今天给大家介绍一个开源项目,让你能够在Linux或者Window11上通过Docker部署群晖NAS,支持多磁盘挂载、KVM加速等等,让你享受…

渗透测试速成

123123321渗透测试速成 主动信息收集 MSF渗透 python反弹一个交互式shell MySQL基础:登录,增删改查.. 框架识别利用:whatweb 信息收集速通 直接arp-scan -l,快速找到IP地址 然后,nmap -A ip+子网掩码,进行全面扫描 探测目标IP地址: 探测主机:arp-scan -l(推荐) 探测当…

Spring AI 提交 PR 实战指南:避免常见坑

今天,我们将简单地了解如何向 Spring AI 提交 PR(Pull Request)。在这个过程中,有一些常见的坑需要大家注意和避免,特别是在 Git 操作方面。我们会重点关注提交信息的规范,如何进行一次合并提交,以及其他在代码质量和结构上需要遵守的要求。 最后,我们会快速回顾一下与…

第一个java程序,HelloWorld

第一个java程序,HelloWorld创建一个java程序后缀名为java编写代码 public class Hello {public static void main (String[] args) {System.out.println("HelloWorld");} }编译 javac java文件 ,会生成一个class文件运行Java文件,java class文件

[Jest] 整合 webpack 综合练习

这一小节,我们来做一个综合的练习,该练习会整合:typescript webpack jest准备工作 首先创建项目目录,通过 npm init -y 进行初始化。 整个项目我们打算使用 typescript 进行开发,因此需要安装 typescript npm i typescript -D然后通过 npx tsc --init 创建 ts 的配置文件,…

Spring AI + Ollama 实现 deepseek-r1 的API服务和调用

最近DeepSeek开源了对openai-o1的第一代开源推理大模型:deepseek-r1,因其极低的成本和与openai-o1相当的性能引发了国内外的激烈讨论。DD在做独立产品的时候也一直都有用DeepSeek的API来实现一些功能,比如:TransDuck中的字幕翻译、视频翻译,效果也是非常不错的。但是,最近…

OceanBase数据库SQL优化案例一则

一、现象 开发人员反馈同一条sql,sql中where条件in的值的个数不同,执行效率差异巨大。以下是截取的sql的一部分,sql中in的值的个数为为2个或3个时执行时间超过40s,in的值的个数为为1个或大于3个时不到1秒就可以返回执行结果。二、原因分析 看到这种现象,最开始怀疑是数据库…

数据库服务器 SQL Server 版本升级公告

祝大家春节快乐 !在明天(1月28日)的辞旧迎新之际,我们也安排了对园子的数据库服务器进行一次辞旧迎新,从 SQL Server 2016 升级至 SQL Server 2022。 我们使用的是阿里云 RDS 云数据库服务,升级将会由 RDS 自动完成,但在升级过程中的切换阶段会造成有段时间不能正常访问…