首页 > 其他分享 >面对对象13:instanceof 和 类型转换

面对对象13:instanceof 和 类型转换

时间:2024-04-02 15:11:21浏览次数:8  
标签:instanceof 类型转换 13 System person Student println out

1.instanceof (类型转换)引用类型,判断一个对象时什么类型(即判断两个类直接是否具有父子关系)

2.instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。

这里说明下:

  • 类的实例包含本身的实例,以及所有直接或间接子类的实例

  • instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误

package com.oop;

import com.oop.demo05.A;
import com.oop.demo05.B;
import com.oop.demo06.Person;
import com.oop.demo06.Student;
import com.oop.demo06.Teacher;
import java.lang.String;


public class Application {
    public static void main(String[] args) {

        //Object > String
        //Object > Person > Teature
        //Object > Person > Student
        Object object = new Student();

        //主要是比较对象是否为后面类的实例
        System.out.println(object instanceof Student);//true
        System.out.println(object instanceof Person);//true
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Teacher);//false
        System.out.println(object instanceof String);//false
        System.out.println("===========================================");

        Person person = new Student();
        System.out.println(person instanceof Student);//true
        System.out.println(person instanceof Person);//true
        System.out.println(person instanceof Object);//true
        System.out.println(person instanceof Teacher);//false
        //System.out.println(person instanceof String);//报错
        System.out.println("===========================================");

        Student student = new Student();
        System.out.println(person instanceof Student);//true
        System.out.println(person instanceof Person);//true
        System.out.println(person instanceof Object);//true
        System.out.println(person instanceof Teacher);//false


    }
}

2.强制转换

public class Application {
    public static void main(String[] args) {
        //类型之间的转化:父   子
        
        //高                   低
        Person obj = new Student();
        //obj.go();//报错
        //student将这个对象转换为Student类型,我们就可以使用Student类型的方法了!
        Student student= (Student)obj;//这样就可以使用子类的方法了,这里是把父类强行转换为子类
        student.go();
        
        //子类转化为父类,可能丢失自己本来的一些方法!
        Student student1 = new Student();
        student1.go();
        Person person = student1;
        //person.go();//报错
        
        
   /*
   1.父类引用指向子类的对象
   2.把子类转换为父类,向上转型
   3.把父类转换为子类,向下转型;强制转换
   4.方便方法的调用,减少重复的代码!
   
   抽象:封装;继承;多态。
        
    */
        
        
        


    }
}

 

标签:instanceof,类型转换,13,System,person,Student,println,out
From: https://www.cnblogs.com/sankouyitouju/p/18110623

相关文章

  • 掌握Go语言:Go语言类型转换,解锁高级用法,轻松驾驭复杂数据结构(30)
    在Go语言中,类型转换不仅仅局限于简单的基本类型之间的转换,还可以涉及到自定义类型、接口类型、指针类型等的转换。以下是Go语言类型转换的高级用法详解:Go语言类型转换的高级用法1.自定义类型之间的转换在Go语言中,可以使用类型别名或自定义类型来创建新的数据类型。自定......
  • 浮木云学习日志(13)---表格设计
    ​在之前的系列文章中已经介绍了浮木云平台的许多使用技巧,本次我将结合下面已经搭建好的表格示例来详细介绍“高级表格”组件。浮木云平台的“高级表格”组件可以通过表格列设置设计多样的表格,展示更丰富的内容。大家也可以进入他们的官网https://www.fumucloud.com/自己动手操作......
  • pta 1013 数素数
    013数素数分数20全屏浏览切换布局作者 CHEN,Yue单位 浙江大学令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM​ 到 PN​ 的所有素......
  • P1967 [NOIP2013 提高组] 货车运输 题解
    P1967[NOIP2013提高组]货车运输原题地址思路:由于题目要求的是使两点之间的最小边权最大,所以可以构造最大生成树(最大生成树一定是最大瓶颈生成树,而瓶颈生成树上两点之间的路径,在原图中的所有路径中,最小边权仍然最大,即满足题目要求,详见https://oi-wiki.org/graph/mst/#性质),......
  • 13.5k star, 免费开源 Markdown 编辑器
    13.5kstar,免费开源Markdown编辑器分类 开源分享项目名:Editor.md--Markdown编辑器Github开源地址: https://github.com/pandao/editor.md在线测试地址: Editor.md-开源在线Markdown编辑器完整实例: HTMLPreview(markdowntohtml)-Editor.mdexamples......
  • 软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)
    接前一篇文章:软考系统架构设计师系列知识点之云原生架构设计理论与实践(12)所属章节:第14章.云原生架构设计理论与实践     第3节云原生架构相关技术14.3.2云原生微服务1.微服务发展背景过去开发一个后端应用最为直接的方式就是通过单一后端应用提供并集......
  • 字节跳动的内部整改:23人移送公安机关,136人被开除
    2024年3月29日,抖音集团(即字节跳动)发布《2023年抖音集团反舞弊通报》。2023年全年,抖音集团共查处舞弊类违规案件177起,其中136人因触犯廉洁红线被辞退,23人因涉嫌违法犯罪被移送司法机关处理。通报如下:互联网大厂反腐呈现高压态势。除了之前提到的腾讯,还......
  • 2024.2.13力扣每日一题——二叉树的垂序遍历
    2024.2.13题目来源我的题解方法一TreeMap+深度优先遍历方法二官方题解(自定义排序)数组实现欢迎讨论(做题中遇到的一个问题)题目来源力扣每日一题;题序:987我的题解方法一TreeMap+深度优先遍历在递归形式的前、中、后序遍历中任选一种进行遍历,并在遍历过程中记......
  • Item13:使用对象管理资源
    芝士wa2024.4.1愚人节快乐Item13参考链接引例:假设我们和一个模拟投资的库一起工作,各种各样的投资形式从一个rootclass中继承出来:classInvestment{...};//rootclass进一步,假设这个库为我们提供特定对象的方法是通过一个工厂函数达成的,Investment*createInvestment()......
  • 代码随想录算法训练营第二十七天(回溯3)|39. 组合总和、40. 组合总和 II、131. 分割回文
    文章目录39.组合总和解题思路源码40.组合总和II解题思路源码131.分割回文串解题思路源码39.组合总和给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回......