学了java也有不少时间了,然而对许多概念性的专业术语掌握的却不够,或者是很差,接口就是其中最重要的一个,这几天做项目,看到同事用接口比较多,然而越看越糊涂,所以就专门查了下关于接口的文章,自认为有点心得,拿出来晒晒,求指正。没有专门整理,可能比较乱。
1、接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,或者说是方法体。
2、接口只是声明了方法名和参数列表,给了一个特征方法的统一命名,当一个类实现了该接口时,只是单纯的得到了接口中的方法的方法名称和参数列表,方法体需要在实现的类中自己写,当这个接口被别的类实现时,依然要自定义方法体。
3、接口不可滥用,当接口中没有方法时,即使实现了该接口,也是没有任何实际意义的,因为接口只是为了统一的方法命名服务的,如果接口中没有方法,那么接口也没有存在的意义,所以为一些javaBean定义接口也是没有必要的。
暂时能想到的就这么多了,等有新的感受时,会继续盖楼,欢迎各位大神垒楼,也给我们这些初学者一些启发,谢谢各位了
------解决方案--------------------
------解决方案--------------------
你都没有理解接口的含义。类是对象的抽象,接口抽得更厉害,是类的抽象。不打机锋,直接看尘世的七情六欲。
比如,你要一个充气娃娃,这个充气娃娃有一个makeLove方法,你买这个娃娃就是冲着makeLove去的,你不关心它是哪国的娃娃,长得怎样。那么代码就体现为:
interface Chongqiwawa{
public void makeLove(String name);
}
class Person{
Chongqiwawa wawa;
public void setWawa(Chongqiwawa wawa){
this.wawa = wawa;
}
private String name;
public void makeLove(){
//调用wawa的makeLove方法
wawa.makeLove(name);
}
现在,你想和wawa那个,就可以这样用了:
main(){
Person you = new Person();
you.makeLove();
}
报错了吧?你怎么能跟虚的wawa那个呢?所以必须要买一个wawa.好吧,去逛成人店选购一个wawa.这里有日本娃娃,美国娃娃,先看看美国娃娃功能怎么样。
class USAWawa implements Chongqiwawa{
public void makeLove(String name){
System.output.println(name + " come on! a,a, a...");
}
}
好吧,你已经流口水了,一口价成交,然后带回家,迫不及待实践一下,代码体现为:
main(){
Person you = new Person();
Chongqiwawa wawa = new USAWawa();
you.setWawa(wawa);
you.makeLove();
}
这时候你已经可以和娃娃水乳交融了。不久,你发觉厌倦了美国娃娃,想试下日本娃娃,再次来到成人超市,日本娃娃makeLove功能实现如下:
class JapanWawa implements Chongqiwawa{
public void makeLove(String name){
System.output.println(name + " yemede! a,a, a...ganbade...");
}
}
OK,你直接丢下一堆钞票一句不用找就抱回家了,马上进入主题:
main(){
Person you = new Person();
//获得实际的wawa
Chongqiwawa wawa = new JapanWawa();
you.setWawa(wawa);
you.makeLove();
}
看见了吗,只需改动一行代码,你就实现了娃娃的切换,得到不同的makeLove感受,其他代码都不用改。
OK,停止 YY,回到主题。
这里的Chongqiwawa 对应于 ActionListener,你要实现actionListener接口就相当于实现一个美国娃娃或日本娃娃,然后你addActionListener,就相当于给系统提供一个wawa,系统只要在产生相应事件时调用接口的actionPerformed方法,就相当于你在饥渴时调用makeLove方法,你知道有这个方法即可,不用关心他是哪来的和怎么实现的。