码迷,mamicode.com
首页 > 其他好文 > 详细

标志接口,空接口,

时间:2015-03-06 15:56:21      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:java   interface   

     标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,
它仅仅表明实现它的类属于一个特定的类型。
标接口在Java语言中有一些很著名的应用,比如java.io.Serializable和java.rmi.Remote等接口便是标识接口。

标识接口,当一个类实现了一个标识接口之后就像是给自己打了个标签。

举个例子来说吧。

猎人用猎枪打猎,猎枪面对的目标是人不开火,猎枪面对的不是人的话就会开火。

//表明万事万物的接口

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一枪
----------------------------------------------------------------
恭喜你,打中了一个植物!
恭喜你,打中了一个植物!
这下完了,打中了一个人,警察来了,赶快跑!
这下完了,打中了一个人,警察来了,赶快跑!

由此可以看出来,有智能控制的打了两枪,打了植物和因为自负没有带人类面具的日本人;但是没有控制的打了所有的人和植物。

这样一来,我们就可以理解空接口的定义和作用了。

标志接口,空接口,

标签:java   interface   

原文地址:http://blog.csdn.net/u014639561/article/details/44099841

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!