接口的使用:
接口的使用有一个很好的例子那就是安卓的click监听。
click监听
的结构十分经典。
public class MyButton {
private OnMyClickListener myClickListener ;
public interface OnMyClickListener{ void onClick(); }
public void setOnMyClickListener( OnMyClickListener onMyClickListener){ this.myClickListener = onMyClickListener ; }
private void whenButtonClick(){ myClickListener.onClick(); } }
首先,接口的定义,我们定义了这样一个名字叫OnMyClickListener接口,里面有一个click方法。
并且在类中 定义了一个。
private OnMyClickListener myClickListener ;
public interface OnMyClickListener{ void onClick(); }
接着,我们在需要点击事件的地方调用这个接口的方法
private void whenButtonClick(){ myClickListener.onClick(); }
最后,我们通过set方法,将使用者自己编写的接口赋值给我们的内部接口。
public void setOnMyClickListener( OnMyClickListener onMyClickListener){ this.myClickListener = onMyClickListener ; }
ps:使用
myButton.setOnMyClickListener(new MyButton.OnMyClickListener() { @Override public void onClick() { } });现在,我们整理一下这个逻辑,我们想要的是当点击的时候调用click方法,而这个click方法是由用户自己编写的。于是我们先把这个为实现的方法定义出来(即接口),接着,我们在该调用的地方调用这个方法(在whenButtonClick中调用),最后,通过set方法,让用户传入已经写好的接口对象。
抽象类的使用:
含抽象方法的类叫抽象类。抽象方法和接口类似指的是未实现的方法。比如我们做大学生的应用,需要描述每个专业大学生能做什么。
那么我们在编写大学生类的时候就可以添加抽象方法,将大学生类变成抽象类。
//大学生类
public abstract class CollegeStudent {
//能做什么 abstract void canDO() ; }
如此一来,细分好专业的大学生类继承大学生类的时候就必须实现定义的抽象方法(即描述大学生能做什么)
//数学系的大学生
public class CollegeStudentInMathmatics extends CollegeStudent { //必须实现canDO方法 描述能做什么@Override void canDO() { } }