`
剑晨java
  • 浏览: 23459 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

对接口的一点认识

阅读更多
  以前虽然老师一直反复强调接口的重要,并且要求我们写任何程序之前都尝试先写接口,但是由于自己浅显的认识,一直觉得写接口就是多此一举,自己先写好接口,写好方法,在继承去实现方法,这不是多此一举吗?直接在类里写完所有方法不就完了吗?
   但随着学习的继续,越来学懂得接口的重要性,并且也尝试写接口,这里,想先写一点自己对接口的一点点认识。
   第一,写接口方可以统一访问。【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,接口的子类会自动向上转型为父类类型,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。比如:
public interface Moveable {
	
	//运动方法
	public void move();
	//画自己的方法
	public void draw(Graphics g);
	//判断是否可以删除的方法
	public boolean canDelete(int w,int h);

}

public class Bullet implements Moveable{
	
	private int x=0,y=0;
	@Override
	public void move() {
		x+=5;
		y+=5;
	}

	@Override
	public void draw(Graphics g) {
		move();
		g.fillOval(x, y, 10,10);
		
	}

	@Override
	public boolean canDelete(int w, int h) {
		if(x<0||x>w||y<0||y>h)
			return true;
		return false;
	}

}

public class Ball implements Moveable{
	
	private int x=0,y=0;//小球初始位置
	@Override
	public void move() {
		x++;
		y++;	
	}
	@Override
	public void draw(Graphics g) {
		move();
		g.fillOval(x, y, 50,50);
		
	}
	@Override
	public boolean canDelete(int w, int h) {
		if(x<0||x>w||y<0||y>h)
			return true;
		return false;
	}

}
小球和子弹类都有相通的方法,可以把方法抽象出来写成一个接口,这样小球和子弹实现接口后,访问和管理小球和子弹类将十分方便。
public class Data {
	
	//存储模型的队列
	private List<Moveable> list=new ArrayList<Moveable>();
	//Data对象
	private static Data instance;
	//只允许内部实例化
	private Data(){	
	}
	/**
	 * 得到数据对象方法
	 * @return Data对象
	 */
	public static Data instance(){
		if (instance==null){
			instance=new Data();
			return instance;
		}else{
			return instance;
		}
			
	}
	/**
	 * 得到数据数组的方法
	 * @return 数据数组
	 */
	public List<Moveable> getList() {
		return list;
	}

}
这样就可以访问小球和子弹两个类。
   第二,团队合作的条件。以前一直不明白为什么要把它翻译为接口。一个程序可能有成千上万的代码,这样必须有多人合作完成,而如果大家都按照自己的喜好写各自负责的部分,那最后怎么能组合在一块呢?这就要先用接口写好框架。这个类我只要这几个方法,实现的子类随便你想怎么写,只要到时调用这几个方法是可以达到想要的效果。不止如此,那么多的类之间关系并不大,那它们如何组合成一个整体呢?接口,它真的像接口一样把所有零件链接在一块,组成最终的整体。特别是一些监听器。
public interface Session {
	
	public boolean connect();
	
	public void send(Msg msg);
	
	public boolean isClose();
	
	public void close();
	
	public void setListener(SessionListener lis);

}

public interface SessionListener {
	
	public void onRecieveMsg(Msg msg);
	
	public void onIsClose();


}

public interface LoginListener {
	
	//按下登录按钮
	public void onClickLogin(Session session);

}

public class LoginUIImplement implements LoginUI,SessionListener{
	
	private JFrame jf=new JFrame();

	@Override
	public void init() {
		jf.setSize(500, 400);
		jf.setVisible(true);
		
	}
	
	@Override
	public void setListener(LoginListener lis) {
	
		
	}

	@Override
	public void onRecieveMsg(Msg msg) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void onIsClose() {
		// TODO 自动生成的方法存根
		
	}


}

public class MainUIImplement implements MainUI,LoginListener,SessionListener{

	@Override
	public void init() {
	
		
	}

	@Override
	public void onClickLogin(Session session) {
	
		
	}

	@Override
	public void onRecieveMsg(Msg msg) {

		
	}

	@Override
	public void onIsClose() {
		
	}



}
可以看到是接听器接口把几个零散的类联系在一块。
分享到:
评论

相关推荐

    Java 8 简明教程 (Java 8 Tutorial中文版)文字pdf版

    “Java并没有没落,人们很快就会发现这一点” 欢迎阅读我编写的Java 8介绍。本教程将带领你一步一步地认识这门语言的新特 性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表 达式,方法引用...

    COM技术初探(pdf格式)

    A 我对dll的一点认识 一. 没有lib的dll 1.1 建一个没有lib的dll 1.2 调试没有lib的dll 二. 带有lib的dll 2.1 创建一个带有lib的dll 2.2 调试带有引用但没有头文件的dll 三. 带有头文件的dll 3.1 创建一个带有引出...

    为什么要进行器件测试?期间测试原理详解.doc

    因此,测试工程师必须对计算机科学编程和操作系统有详细的认识。测试工程师必须清楚了解测试设备与器件之间的接口,懂得怎样模拟器件将来的电操作环境,这样器件被测试的条件类似于将来应用的环境。 首先有一点...

    从模式讲到设计模式再到面向对象设计模式

    亚历山大看到了这一点,他知道结构不能与要解决的问题分离,因此,在寻找和描述设计质量一致性的探求中,亚历山大认识到,必须观察为了解决同样问题而设计的不同结构。  亚历山大发现,通过这样的方式——观察解决...

    singularity-cri:Kubernetes 容器运行时接口的 Singularity 实现

    我们认识到对奇点cri和wlm-operator仍然有兴趣,我们希望这些项目能够在社区中找到可以进一步开发和维护它们的住所。 该代码在 Apache License 2.0 下开源,以兼容 k8s 生态系统中的其他项目。 如果您有兴趣为这些...

    文档对象模型DOM通俗讲解

    加深对DOM的理解,从而对它有一个全面的认识。 什么是DOM DOM的全称是Document Object Model,即文档对象模型,它允许脚本控制Web页面、窗口和文档。 如果没有DOM,JavaScript将是另外一种脚本语言;而有了DOM,它将...

    对复杂的单元测试使用模拟对象

    无论一个开发人员是在进行测试驱动的开发(TDD)还是在编写代码后创造单元测试,有一点是十分明显的,那就是单元测试有助于产出高质量、无缺陷的代码。即便开发人员知道测试的益处,我们也会发现程序员们不愿意测试...

    OpenSSL-1_0_0d_Win32

    虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个...

    c#学习笔记.txt

    当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)...

    openssl-1.0.0a

    虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个...

    计算机硬件的合理配置教学设计(1).doc

    3) 学情分析 知识基础:学习者是我校初三年级的学生,通过本章内容的学习他们对计算机硬件 部分有了一定认识,并具有一定的网络学习能力。对计算机系统组成知识有非常浓厚兴 趣。他们思维活跃,能积极参实践活动。 ...

    计算机硬件的合理配置教学设计.doc

    3) 学情分析 知识基础:学习者是我校初三年级的学生,通过本章内容的学习他们对计算机硬件 部分有了一定认识,并具有一定的网络学习能力。对计算机系统组成知识有非常浓厚兴 趣。他们思维活跃,能积极参实践活动。 ...

    酒店管理系统课程设计.doc

    第4章 系统总体设计 本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有 一个系统、全面、确切的认识。 4.1 系统功能模块设计 结合前面需求分析阶段的结果进行综合处理,确定了客房管理...

    元器件应用中的芯片开发和生产中的IC测试基本原理

    用来完成这一功能的自动测试设备是由计算机控制的,因此,测试工程师必须对计算机科学编程和操作系统有详细的认识,测试工程师必须清晰了解测试设备与器件之间的接口,懂得怎样模拟器件将来的电操作环境,这样器件被...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    计算机硬件的合理配置教学设计(2).doc

    学习重点 (1)加强对计算机主要硬件CPU、主板、内存、显卡四个部件的主要技术参数,品牌, 接口等要素的理解。 (2)了解主板、中央处理器、存储器、显卡合理搭配的相关知识。 (3) 1. 学习难点 (1)主板功能及相关知识 ...

    二十三种设计模式【PDF版】

    以下类比可以帮助说明这一点。 小说家和剧本作家很少从头开始设计剧情。他们总是沿袭一些业已存在的模式,像“悲剧性英雄”模式(《麦克白》、《哈姆雷特》 等)或“浪漫小说”模式(存在着无数浪漫小说)。同样地,面向...

    IC测试原理解析(第一部分)

    因此,测试工程师必须对计算机科学编程和操作系统有详细的认识。测试工程师必须清楚了解测试设备与器件之间的接口,懂得怎样模拟器件将来的电操作环境,这样器件被测试的条件类似于将来应用的环境。 首先有一点必须...

    布线规则.txt

    1、 正确的单点和多点接地在低频电路中,信号的工作频率小于1MHZ,它的布线和器件间的电感影响较小,而接地电路形成的环流对干扰影响较大,因而应采用一点接地。当信号工作频率大于10MHZ 时,如果采用一点接地,其...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

Global site tag (gtag.js) - Google Analytics