以前虽然老师一直反复强调接口的重要,并且要求我们写任何程序之前都尝试先写接口,但是由于自己浅显的认识,一直觉得写接口就是多此一举,自己先写好接口,写好方法,在继承去实现方法,这不是多此一举吗?直接在类里写完所有方法不就完了吗?
但随着学习的继续,越来学懂得接口的重要性,并且也尝试写接口,这里,想先写一点自己对接口的一点点认识。
第一,写接口方可以统一访问。【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,接口的子类会自动向上转型为父类类型,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。比如:
第二,团队合作的条件。以前一直不明白为什么要把它翻译为接口。一个程序可能有成千上万的代码,这样必须有多人合作完成,而如果大家都按照自己的喜好写各自负责的部分,那最后怎么能组合在一块呢?这就要先用接口写好框架。这个类我只要这几个方法,实现的子类随便你想怎么写,只要到时调用这几个方法是可以达到想要的效果。不止如此,那么多的类之间关系并不大,那它们如何组合成一个整体呢?接口,它真的像接口一样把所有零件链接在一块,组成最终的整体。特别是一些监听器。
但随着学习的继续,越来学懂得接口的重要性,并且也尝试写接口,这里,想先写一点自己对接口的一点点认识。
第一,写接口方可以统一访问。【接口名】 【对象名】=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() {
}
}
可以看到是接听器接口把几个零散的类联系在一块。