标识接口,当一个类实现了一个标识接口之后就像是给自己打了个标签。
举个例子来说吧。
猎人用猎枪打猎,猎枪面对的目标是人不开火,猎枪面对的不是人的话就会开火。
//表明万事万物的接口
public interface SomeThing {}
//表明是人类的接口
public interface Humans {}
//表明是植物的接口
public interface Plant {}
接下来就是核心部分了。
//美国人带上了人类的面具
public class American implements Human{}
//日本人没有带人类的面具
public class Japanese {}
//仙人掌带上了植物的面具
public class Cactus implements Plant{}
//编写测试类
public class Hunter {
/*
* 没有任何控制的开火
*/
public void fire(Object target){
if(target instanceof Human)
{
System.out.println("这下完了,打中了一个人,警察来了,赶快跑!");
}
else
{
System.out.println("恭喜你,打中了一个植物!");
}
}
/*
* 只攻击非人类的开火控制
*/
public void inintelligentFire(Object target){
if(target instanceof Human)
{
return;
}
System.out.println("你打了!"+target.getClass()+"一枪");
//下面进行秒杀等相关处理
//销毁他
target=null;
}
public static void main(String[] args) {
Hunter h = new Hunter();
Object[] objects = new Object[]{
new Cactus(),new Japanese(),new American(),new Originals()
};
for (int i = 0; i < objects.length; i++) {
h.inintelligentFire(objects[i]);
}
System.out.println("----------------------------------------------------------------");
for (int i = 0; i < objects.length; i++) {
h.fire(objects[i]);
}
}
}
运行结果如下:
你打了!class kongjiekou.Cactus一枪
你打了!class kongjiekou.Japanese一枪
----------------------------------------------------------------
恭喜你,打中了一个植物!
恭喜你,打中了一个植物!
这下完了,打中了一个人,警察来了,赶快跑!
这下完了,打中了一个人,警察来了,赶快跑!
由此可以看出来,有智能控制的打了两枪,打了植物和因为自负没有带人类面具的日本人;但是没有控制的打了所有的人和植物。
这样一来,我们就可以理解空接口的定义和作用了。
原文地址:http://blog.csdn.net/u014639561/article/details/44099841