最近在看公司的项目,发现关于接口的使用很多,但是因为没有经常使用接口的习惯,感觉代码好难看懂,可能是自己一直的代码都不规范导致的吧。其实使用接口,可以方便很多事情,java里面设计接口也不是没有道理的。
说一下自己的简单理解吧,在父类中声明接口,并且调用接口,在子类中声明接口的具体实现方法。
一个简单的demo方便理解:
A类:
public interface OnItemCLickListener{
void onItemClick(View view);
}
private OnItemClickListener mOnItemClickListener;
public void setOnTestClick(OnItemClickListener mOnItemClickListener){
this.mOnItemClickListener = mOnItemClickListener;
}
view.setOnClickListener(
new OnClickListener(View view){
public void click(){
mOnItemClickListener.onItemClick(view);
}
}
);
即在A类中声明接口,并且调用接口,但是没有给定具体的实现方法,可以在B类中声明具体的实现方法
B类:
A a = new A();
a.setOnTestClick(new OnItemClickListener(){
public void onItemClick(View view){
//具体实现方法
}
})
这就是简单接口的实现,再整理一遍:在A类中声明接口调用,在B类中实现接口的方法。
在以后的开发中,尽量多的使用接口,可以提高代码的复用率,减少代码量,并且可以方便开发
存在即合理。刚接触接口的时候,里面只有方法名,没有具体的实现方法,感觉没有什么用,从最近接触项目来说,接口的用处实在强大、方便。但是希望不要滥用,我是深受其害。。。
一般在项目中,子类重用某种方法的时候,合理的使用接口,可以让项目代码简洁、美观、大气。
接口的出现,很好的弥补了java中不能多继承的缺陷,接口应该就是因为这个原因出现的,实际上也确实弥补了没有多继承的不方便性。在类中继承接口,跟继承类后的效果是一样的。如
public class D{
public void methodD(){
....
}
}
public interface C{
void methodC();
}
class A implements C{
public void methodC(){
....
}
}
class B extends D implements C{
public void methodC(){
....
}
}
A a = new A();
B b = new B();
C ca = new A();
C cb = new B();
ArrayList<C> cs = new ArrayList<>();
cs.add(a);
cs.add(b);
ca.methodC();
cb.methodC();
cb.methodD();// 此方法是错误的,接口C中没有此方法
以上代码只是简单的理解接口的使用,看似简单的代码,真正使用起来是很方便易用的,对接口的加深理解,可以更加规范自己的代码,有利于代码的复用。在一些特殊的场合,接口总能展现出他存在的意义、价值与魅力。