Java在线教程??接口篇
作者:网络转载 发布时间:[ 2013/1/24 11:29:20 ] 推荐标签:
使用接口类型
在你定义一个新的接口时,你其实在定义一个新的引用类型。在你能使用数据类型名称的地方,都可以使用接口名称。如果你定义了一个类型为接口的引用变量,该变量能指向的对象所在的类必须实现了该接口。
下例是一个在一对对象中返回较大对象的方法:
public Object findLargest(Object object1, Object object2) {
Relatable obj1 = (Relatable)object1;
Relatable obj2 = (Relatable)object2;
if ((obj1).isLargerThan(obj2) > 0)
return object1;
else
return object2;
}
通过把数据类型object1转换成Relatable,对象obj1可以调用isLargerThan方法。
同理,只要是实现了Relatable的类,也可以使用下面的方法。
public Object findSmallest(Object object1, Object object2) {
Relatable obj1 = (Relatable)object1;
Relatable obj2 = (Relatable)object2;
if ((obj1).isLargerThan(obj2) < 0)
return object1;
else
return object2;
}
public boolean isEqual(Object object1, Object object2) {
Relatable obj1 = (Relatable)object1;
Relatable obj2 = (Relatable)object2;
if ( (obj1).isLargerThan(obj2) == 0)
return true;
else
return false;
}
这些方法适用于任何“Relatable”的类,而无关它们的继承关系。实现了Relatable的类,它们既属于自身(或者父类)的类型,也属于Relatable类型。这使得它们具有了多重继承的优点,因为它们可以同时具备父类和接口的行为。
重写接口
假设你开发了一个接口名为DoIt:
public interface DoIt {
void doSomething(int i, double x);
int doSomethingElse(String s);
}
然后,你想加入一个新的方法在这个接口里,因此代码变成:
public interface DoIt {
void doSomething(int i, double x);
int doSomethingElse(String s);
boolean didItWork(int i, double x, String s);
}
如果你这么修改了,所有实现了旧的DoIt接口的类都会出错,因为它们不再正确的实现这个接口。所有使用这个接口的程序员会严重抗议你的修改。
你需要预估你的接口用户的需求,并从开始完善的设计好这个接口。但是这常常是无法做到的。另一个解决方法是再写一个接口。例如,你可以写一个DoItPlus的接口继承原有的接口。
public interface DoItPlus extends DoIt {
boolean didItWork(int i, double x, String s);
}
现在你的用户可以选择继续使用旧接口DoIt,或是升级的新接口DoItPlus。
总结
接口是两个对象间的沟通协议。
一个接口的声明包含一些方法的签名(signatures),但不需要实现它们;也可能含有一些常量。
实现某接口的类必须实现该接口所声明的所有的方法。
在任何使用类型名称的地方都可以使用接口的名字。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11