java1234开源博客系统
博客信息

Java面向对象-instanceof关键字

0
发布时间:『 2016-10-16 18:37』  博客类别:Java核心基础  阅读(6027) 评论(0)

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("我是一只狗");
	}
}
package com.java1234.chap03.sec14;

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

我是一只狗

汪汪...

我是一只猫

我喜欢吃鱼



关键字:   java     instanceof  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有