Java面向对象——instanceof关键字

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

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

 

运用之前的Animal类:

package m12d27;

public class Animal {

	public void say(){
		System.out.println("我是一个动物");
	}
	
}

两个子类:

package m12d27;

public class Cat extends Animal{

	public void say(){
		System.out.println("我是一只猫");
	}
}
package m12d27;

public class Dog extends Animal{

	public void say(){
		System.out.println("我是一只狗");
	}
}

测试类:

package m12d27;

public class Test {

	public static void main(String[] args) {
		
		Animal a=new Dog();
		
		System.out.println(a instanceof Animal);
		System.out.println(a instanceof Dog);
		System.out.println(a instanceof Cat);
	}
}

可以看出,a属于Animal类,也属于Dog类,因为向上转型;

a不属于Cat,因此返回false;

true
true
false

 

在进行向下转型的过程中,我们需要知道某个对象是否属于某个类,因此可以用到Instanceof关键字;

比如现在在每个子类里面加上自己的方法:

package m12d27;

public class Dog extends Animal{

	public void say(){
		System.out.println("我是一只狗");
	}
	
	public void f1(){
		System.out.println("汪汪汪...");
	}
}
package m12d27;

public class Cat extends Animal{

	public void say(){
		System.out.println("我是一只猫");
	}
	
	public void f2(){
		System.out.println("喵喵喵...");
	}
}
package m12d27;

public class Test {
	
	public static void dosomething(Animal a){
		a.say();
		/**
		 * 向下转型的过程中,如果属于Dog类,调用f1方法
		 * 如果属于Cat类,调用f2方法
		 */
		if(a instanceof Dog){
			((Dog) a).f1();
		}else if(a instanceof Cat){
			((Cat) a).f2();
		}
	}

	public static void main(String[] args) {
		
		Animal a=new Dog();
		
		System.out.println(a instanceof Animal);
		System.out.println(a instanceof Dog);
		System.out.println(a instanceof Cat);
		
		//进行向下转型,需要先判断是属于哪个类,再来转型
		dosomething(new Dog());
		dosomething(new Cat());
		
	}
}

 输出结果为:

true
true
false
我是一只狗
汪汪汪...
我是一只猫
喵喵喵...

可以看出,在向下转型的过程中,是先判断属于哪个类,再进行调用各自类的方法; 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值