既然接口都是抽像的方法 不能定义方法体,还得在其他实现他的类中重写 那为什么还用到接口?还有什么特殊的用途?
解决方案 »
- 疑惑,java的编码风格
- jtable的换行 在先等...急 ..急...急...
- 如何设定Calendar,使其月份1代表1月而不是2月
- 主JFrame 关闭,程序仍在运行???
- InetAddress IP4=InetAddress.getByName("192.168.1.100");
- 帮我看看这段代码,为什么运行的时候有错误啊
- qnzu(大风)请进接分:回答文件流问题
- incompatible types; found: java.sql.Connection, required: com.redv.database.Connection at line
- 请问什么是J2SE,我很菜请用通俗的话帮我解答一下,谢谢!
- 如何判断SOCKET还是连接着的?
- 高手来给看个程序
- 请问做一个成绩管理系统怎么做
定义一个接口Inter,包含一个方法print();定义两个类ClassA,ClassB分别实现接口Inter中的方法;
当用接口的引用调用方法时,其调用的方法为接口引用所指向的方法;见下程序:
interface Inter{
public void print();
}
class ClassA implements Inter{
public void print(){
System.out.println("class A");
}}
class ClassB implements Inter{
public void print(){
System.out.println("class B");
}}
public class Test {
public static void main(String[] args) {
Inter inter ;
ClassA a = new ClassA();
ClassB b = new ClassB();
inter = a;
inter.print();
inter = b;
inter.print();
}}
输出结果:
ClassA
ClassB
例如写一个数据库接口。以前是链接用mysql。现在突然换成sql server。你只要写一个实现数据库接口的类。
多练习、多想、多看书
Arrays.sort(o);//这里的ClassA 必须实现java.lang.Comparable接口,并定义compareTo(Object o)方法;
//类似还有很多,使用自定义的类做HashMap的key 则必须重写hashCode()方法;
//要想对象可以克隆,则必须实现Cloneable接口,并且重写clone()方法;
//要想用System.out.println(o);输出对象中的域和值,则要重写toString()方法
//等等还有很多
其次接口充分利用了java的多态特性,可以在运行时决定调用的是哪个具体实现
再者面向接口编程减少了类之间的耦合性,方便软件的管理和组织
其实spring里就用到了很多接口的特性
java 提倡面向接口编程 这句P话就是接口的作用
接口A m()
类B 实现 A
类C 实现 A
那么A 中有的方法B,C都要给出m()的具体的方法体。而且方法体可以不同,可以完成各自的业务逻辑。这样,当逻辑需要B中的方法时,调用B中的方法m()方法;当逻辑需要C中的方法时,调用C中的方法m()方法。这样就是先了多态,也就是接口的作用!know了?
1.多态。
同一个接口,不同的实现类,采用了不同的实现方式。使得程序更具有适应性。
2.程序的分层开发。
横向或纵向的分层开发。
比如,一个卖书的网站。
横向可以MVC三层,先定义好业务层和持久层的接口,接下来就可以将具体的实现,交由其他同事来完成。
纵向可以分层图书管理,交易管理,会员管理等等。先定义接口,具体实现可交由不同的小组来完成。
3.动态类加载。
在应用中,某个类需要热部署。如同JSP文件似的,更新了JSP,不用重启应用程,就能生效。
我们知道,程序员可以自定义类加载器,进行类加载。
一般都是,接口由应用程序的类加载器来加载,而其实现类,用自定义的加载器对象进行加载。
编写程序监听实现类文件,当实现类文件变化时,创建自定义加载器对象,加载新的实现类。
就象电源,它有规范:220V、50Hz、正弦交流电。
而电源的提供者,无论是家里的还是办公室的,都按这个规范提供电力
电源的使用者,包括洗衣机、冰箱、电脑,充电器,都按这个规范标准获得电源无论是实现接口还是使用接口,都不必关心另一方面的细节,这就减少了模块之间的耦合
而同时,接口的实现者不会限制使用接口的是什么类型,就象电源不会限制只能给洗衣机供电一样;并且接口的使用者也不会局限接口的实现者,就象你家里的电吹风不会局限在只能用卫生间的电源。