instanceof运算符

instanceof 是 Java 中的一个二元运算符,用于检查一个对象是否为特定类的实例或其子类的实例。

语法:

object instanceof Class
  • object: 要检查的对象。
  • Class: 要检查的类或接口。.

返回值:

  • 如果 object 是 Class 的实例或其子类的实例,则返回 true
  • 否则,返回 false

用途:

  • 类型检查: 在运行时检查对象的类型,以确定是否可以安全地执行特定操作。
  • 多态性: 在多态场景中,使用 instanceof 运算符可以区分不同类型的对象,并执行相应的操作。
  • 条件判断: 在条件语句中使用 instanceof 运算符,根据对象的类型执行不同的代码分支。

子类 instanceof 父类: 总是为真,因为子类是父类的特例,它继承了父类的所有属性和方法。

父类 instanceof 子类: 通常为假,因为父类本身不是子类的实例。

示例:

class Animal { }
class Dog extends Animal { }

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // animal 实际存储的是 Dog 对象

        if (animal instanceof Dog) {
            System.out.println("animal 是 Dog 的实例"); // 输出:animal 是 Dog 的实例
        } else {
            System.out.println("animal 不是 Dog 的实例");
        }

        Animal animal2 = new Animal(); // animal2 实际存储的是 Animal 对象

        if (animal2 instanceof Dog) {
            System.out.println("animal2 是 Dog 的实例"); 
        } else {
            System.out.println("animal2 不是 Dog 的实例"); // 输出:animal2 不是 Dog 的实例
        }
    }
}

接口示例:

interface Flyable {
    void fly();
}

class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("鸟儿在飞翔");
    }
}

class Fish {
    // 没有实现 Flyable 接口
}

public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird();
        Fish fish = new Fish();

        // 检查 bird 是否实现了 Flyable 接口
        if (bird instanceof Flyable) {
            System.out.println("bird 实现了 Flyable 接口"); // 输出:bird 实现了 Flyable 接口
        }

        // 检查 fish 是否实现了 Flyable 接口
        if (fish instanceof Flyable) {
            System.out.println("fish 实现了 Flyable 接口"); // 不输出任何内容
        }
    }
}
  • instanceof 运算符可以用于检查对象是否实现了特定接口。
  • 如果一个对象实现了某个接口,结果为 true
  • 如果一个对象没有实现某个接口,结果为 false

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值