当前位置: 首页 > article >正文

java关键字-instanceof

主要作用

A instanceof B主要判断以下三个内容(即左边的类型A能否转换为右边的B):

  • 判断对象A是否是B类的对象;
  • 判断对象A实现了B接口;
  • 判断对象A是否继承了B类;

A表示对象,B表示接口/类,如果A对象为B的对象,或者间接/直接实现B接口,或者间接/直接继承B类,则返回true,否则返回false

代码举例

Animal接口

package com.cyy.instance;

public interface Animal {
    public void eat();
}

Animal接口的两个实现类:Cat和Dog

package com.cyy.instance;

public class Cat implements Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

package com.cyy.instance;

public class Dog implements Animal{
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}

cat的两个实现类:BlackCat和WhiteCat

package com.cyy.instance;

public class BlackCat extends Cat{
}


package com.cyy.instance;

public class WhiteCat extends Cat{
}

WhiteCat的实现类:WhiteBlackCat

package com.cyy.instance;

public class WhiteBlackCat extends WhiteCat{
}

测试

package com.cyy.instance;

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        WhiteCat whiteCat = new WhiteCat();
        BlackCat blackCat = new BlackCat();
        WhiteBlackCat whiteBlackCat = new WhiteBlackCat();

        //1.判断对象cat是否是Cat类的对象
        boolean b1 = cat instanceof Cat;
        System.out.println(b1);//true

        //2.判断dog和cat是否实现了Animal接口
        boolean b2 = cat instanceof Animal;
        boolean b3 = dog instanceof Animal;
        System.out.println(b2);//true
        System.out.println(b3);//true

        //3.判断whiteCat和blackCat是否继承了Cat
        boolean b4 = whiteCat instanceof Cat;
        boolean b5 = blackCat instanceof Cat;
        System.out.println(b4);//true
        System.out.println(b5);//true

        //4.间接实现接口,判断whiteCat和blackCat是否可以转换为Animal
        boolean b6 = whiteCat instanceof Animal;
        boolean b7 = blackCat instanceof Animal;
        System.out.println(b6);//true
        System.out.println(b7);//true

        //间接继承类:判断
        boolean b8 = whiteBlackCat instanceof Cat;
        System.out.println(b8);//true
    }
}

http://www.kler.cn/a/569682.html

相关文章:

  • 具身智能(Embodied AI)的物理交互基准测试:构建真实世界的智能体评估体系
  • 奇妙跨界:将前端概念融入整数操作
  • Python 爬虫 – BeautifulSoup
  • Linux常见基本指令(二)
  • 批量提取 Word 文档中的页面
  • php序列化与反序列化
  • 迷你世界脚本世界接口:World
  • 矩阵 trick 系列 题解
  • 算法日常刷题笔记(3)
  • 【R语言】PCA主成分分析
  • 计算机毕业设计SpringBoot+Vue.js常规应急物资管理系统(源码+文档+PPT+讲解)
  • 梳理vite构建vue项目可选的配置和组件
  • 匿名内部类与Lambda表达式不理解点
  • 第34周:文献阅读
  • 基于SSM实现的bbs论坛系统功能实现九
  • git管理的项目 发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并) 还是 cherry-pick(挑拣) 引入更新的代码?
  • 25考研数二408部分时间统计
  • 【漫话机器学习系列】109.线性无关(Linearly Independent)
  • DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)
  • Netty介绍