刚刚和大峡讨论一个问题,接口编程,这个话题也许大家比我理解多了,我提出一个自己的观点:在个人程序中空接口很少,至少我见的很少!大峡:不对,空接口很多,接口只不过是一个标识,然后我们做了一个很有意思的程序:
空接口:
package springroad.demo.taginterface;
public interface SomeThing {}
人的接口:
package springroad.demo.taginterface;
public interface Humans extends SomeThing {}
动物接口:
package springroad.demo.taginterface;
public interface Animals extends SomeThing {}
创建一系列对象:
中国人:
package springroad.demo.taginterface;
public class Chinese implements Humans {}
日本人:
package springroad.demo.taginterface;
public class Japanese implements SomeThing {}
狗:
package springroad.demo.taginterface;
public class Dog implements Animals {}
主人:
package springroad.demo.taginterface;
public class Monster implements Humans {}
,下面建立一个猎人类:
package springroad.demo.taginterface;
public class Hunter {
//智能的枪
public void intelligent(Object target)
{
if(target instanceof Animals){
System.out.println("打死了一个动物");
}
else if(target instanceof Humans)
{
System.out.println("这个是人类不能开枪的!");
}else{
System.out.println("打死一个日本人,它竟然连动物都不是,浪费了一颗子弹,唉!");}
//下面进行闪杀等相关处理
//销毁他
target=null;
}
public static void main(String[] args) {
Hunter hunter=new Hunter();
SomeThing[] objects=new SomeThing[]{new Dog(),new Chinese(),new Japanese(),new Monster()};
for(int i=0;i<objects.length;i++)
hunter.intelligent(objects[i]);
}
};
这个程序都是通过一系列的空接口来实现的,不过最后他使用一个内部类,要不new 接口就出错了,程序简单,设计颇见优雅,值得大家学习,最后输出结果是:
打死一个动物!
这个是人类不能开枪的!
打死一个日本人,它竟然连动物都不是,浪费一颗子弹,唉!
这个是人类不能开枪!
分享到:
相关推荐
浅谈Java面向接口编程 面向接口编程是Java编程中的一种重要思想,它与面向对象编程紧密相关。在本文中,我们将探讨面向接口编程的概念、接口的本质、面向接口编程的思想内涵、面向接口编程的好处等方面。 一、面向...
Java 中的面向接口编程 在面向对象的系统中,系统的各种功能是由许多不同的对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了,而各个对象之间的协作关系那么成为系统...
### 微软架构师谈编程语言发展 #### 关键知识点概览 1. **编程语言发展的多维度考量** - **历史背景**:每种语言都有其独特的历史发展轨迹,如VB从弱类型语言逐渐过渡到强类型语言,而C#自诞生以来即定位为强类型...
本文将深入探讨编程经验中的关键点,结合“程序设计经验谈”这一主题,帮助读者更好地理解和应用编程技巧。 1. **代码可读性**:一个优秀的程序员始终注重代码的可读性,因为代码是给人读的,而不是机器。清晰的...
此外,我们要学会在编程中运用各种原则,如开闭原则(Open-Closed Principle)、依赖倒置原则(Dependency Inversion Principle)、接口隔离原则(Interface Segregation Principle)、里氏替换原则(Liskov ...
下面,我们将结合标题“谈一谈网络编程学习经验”以及描述中的数字串(可能是随机输入或者错误),探讨网络编程学习的一些关键知识点。 首先,基础理论是学习网络编程的基石。你需要理解网络的基本概念,如OSI七层...
### 浅谈病毒编程(2) #### 概述 本文档深入探讨了针对Windows操作系统(包括Win9x、Me、NT、2000及XP)的病毒编程技术,特别是那些被称为win32.virus的一类病毒。这些病毒主要通过感染PE文件(可移植执行文件...
本文将深入探讨ARM架构下嵌入式软件编程的一些关键知识点,结合"ARM嵌入式软件编程经验谈"这份PDF文档,我们将涵盖以下几个方面: 1. **ARM处理器架构**:ARM(Advanced RISC Machines)是一种精简指令集计算(RISC...
Socket是网络通信的核心,它封装了TCP和UDP等传输层协议,为开发者提供了一种简单易用的接口。在C#中,我们可以使用System.Net.Sockets命名空间中的Socket类来创建和操作Socket对象。例如,创建一个TCP服务器端...
本文探讨了如何通过网络接口实现DSP片外Flash在线系统编程,即在不改变硬件条件下,通过网络接口向DSP的外部Flash中下载程序代码,实现DSP应用系统软件的调试与升级。文章首先指出传统设计中使用RS232作为数据传输...
### 浅谈JavaScript面向对象编程 #### 一、概述 面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。在JavaScript中,尽管语言本身并不支持传统的类(class)概念,但开发者可以通过原型继承和其他技术来...
### 浅谈VB与Matlab混合编程 #### 引言 随着计算机技术的快速发展和应用领域的不断拓宽,软件开发人员面临着越来越复杂的问题。在解决这些复杂问题的过程中,往往需要多种编程语言和技术的协同作用。Microsoft ...
PB编程经验谈涵盖了从基础到高级的各种技巧和最佳实践,旨在帮助开发者提升效率,创建稳定且功能丰富的应用程序。 1. **PowerBuilder基础** - **语法与结构**:PB使用类似SQL的语法,使得数据库操作直观易懂。它...
### 浅谈自制51单片机编程器方法和策略 #### 引言 随着单片机技术的不断发展,编程器作为单片机系统开发过程中不可或缺的工具之一,其重要性日益凸显。专业的编程器虽然功能强大且稳定,但由于高昂的价格使得很多...
标题"商业编程-源码-也谈如何隐藏显示在任务栏中的对话框程序.zip"和描述中提到的问题,就是关于如何在Windows系统中隐藏显示在任务栏中的对话框程序。这个压缩包文件包含了一个源码示例,旨在教授开发者如何实现这...
"浅谈Java多线程编程" 从标题和描述可以看出,这篇文章的主题是讨论Java多线程编程的相关知识点。 多线程编程的概念 Java语言的一个重要特点是支持多线程机制,这使得Java程序可以支持多程序并发执行,从而提高...
浅谈 Java 的接口的作用和意义 Java 接口是一种抽象的概念,定义了一系列方法和特征的集合。它可以对应 Java 中特定的语法结构,与抽象类不同的是,抽象类可以实现某些方法,而接口不能。 Java 接口的存在意义在于...
而对于S7-300,可以探讨其在工业通信中如何通过各种接口模块实现与设备的稳定连接,并考虑其在各种复杂工况下的抗干扰性能。 最后,抗干扰措施还应结合具体的应用场景来设计,这就需要了解PLC在实际工况下的运行...