这是昨天我跟天意在一次闲聊中一次有起的讨论,标签接口真有那么重要吗?比如说很多初学者认为java.io.Serializable这样的接口,很多时候可用可不用,不用一样能执行对象系列化功能。
为此,我们通过一个通俗而有趣的示例!这个示例是设计一个猎人,其持有一把智能猎枪,这就是说这把猎枪会自动识别人类,若发现瞄准的目标是人类,就不会开火,而其它的任何事物都通杀。
为此,我们使用了下面三个接口:
一个用来表示万事万物的SomeThing
public interface SomeThing {}
人类的接口:
public interface Humans extends SomeThing {}
动物的接口:
public interface Animals extends SomeThing {}
然后是一系列的实现:
中国人:
public class Chinese implements Humans {}
日本人:
public class Japanese {}
狗:
public class Dog implements Animals {}
妖怪(他很聪明,给自己帖上了人的标签):
public class Monster implements Humans {}
下面这个程序的核心部分ÿ