对接口的一点认识

以前虽然老师一直反复强调接口的重要,并且要求我们写任何程序之前都尝试先写接口,但是由于自己浅显的认识,一直觉得写接口就是多此一举,自己先写好接口,写好方法,在继承去实现方法,这不是多此一举吗?直接在类里写完所有方法不就完了吗?
但随着学习的继续,越来学懂得接口的重要性,并且也尝试写接口,这里,想先写一点自己对接口的一点点认识。
第一,写接口方可以统一访问。【接口名】 【对象名】=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() {

}


}
可以看到是接听器接口把几个零散的类联系在一块。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值