Java面向对象--instanceof关键字

作用:判断一个对象是否属于一个类

格式:对象 instanceof 类 返回布尔类型

我们先来建一个父类Animal,以及子类Dog,Cat类:

package com.java1234.chap03.sec14;
 
public class Animal {
 
    public void say(){
        System.out.println("我是一个动物");
    }
}
package com.java1234.chap03.sec14;
 
public class Dog extends Animal{
 
    public void say(){
        System.out.println("我是一只狗");
    }
}
 
public class Cat extends Animal{
 
    public void say(){
        System.out.println("我是一只猫");
    }
}

我们搞个测试类:

package com.java1234.chap03.sec14;
 
public class Test {
 
    public static void main(String[] args) {
        Animal dog=new Dog();
        System.out.println("dog对象是否属于Animal类:"+(dog instanceof Animal));
        System.out.println("dog对象是否属于Dog类:"+(dog instanceof Dog));
        System.out.println("dog对象是否属于Cat类:"+(dog instanceof Cat));
    }
}

运行输出:

dog对象是否属于Animal类:true

dog对象是否属于Dog类:true

dog对象是否属于Cat类:false

通过instanceof我们可以确保向下转型的不出问题;

我们给Dog类,Cat类加各自的方法;

package com.java1234.chap03.sec14;
 
public class Dog extends Animal{
 
    public void say(){
        System.out.println("我是一只狗");
    }
     
    public void f1(){
        System.out.println("汪汪...");
    }
}
package com.java1234.chap03.sec14;
 
public class Cat extends Animal{
 
    public void say(){
        System.out.println("我是一只猫");
    }
     
    public void f2(){
        System.out.println("我喜欢吃鱼");
    }
}
package com.java1234.chap03.sec14;
 
public class Test {
 
    public static void doSomeThing(Animal animal){
        animal.say();
        if(animal instanceof Dog){
            ((Dog) animal).f1();
        }else if(animal instanceof Cat){
            ((Cat) animal).f2();
        }
    }
     
    public static void main(String[] args) {
        Animal dog=new Dog();
        System.out.println("dog对象是否属于Animal类:"+(dog instanceof Animal));
        System.out.println("dog对象是否属于Dog类:"+(dog instanceof Dog));
        System.out.println("dog对象是否属于Cat类:"+(dog instanceof Cat));
         
        doSomeThing(new Dog());
        doSomeThing(new Cat());
    }
}

运行输出:

dog对象是否属于Animal类:true

dog对象是否属于Dog类:true

dog对象是否属于Cat类:false

我是一只狗

汪汪...

我是一只猫

我喜欢吃鱼

 

转载于:https://www.cnblogs.com/xyg-zyx/p/9827374.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值