java接⼝耗时分析_实例分析Java接⼝实现
说到Java接⼝实现,我们先来通过⼀个例⼦来明确Java中接⼝的概念,这个例⼦是"⽐较",很多对象都可以⽐较,对于求最⼤值、求最⼩值、排序的程序⽽⾔,它们其实并不关⼼对象的类型是什么,只要对象可以⽐较就可以了,或者说,它们关⼼的是对象有没有可⽐较的能⼒。
Java
API中提供了Comparable接⼝,以表⽰可⽐较的能⼒,但它使⽤了泛型,⽽我们还没有介绍泛型,所以本节,我们⾃⼰定义⼀个Comparable接⼝,叫MyComparable。
现在,⾸先,我们来定义这个java接⼝,代码如下:
public interface MyComparable {
int compareTo(Object other);
}
解释⼀下:
Java使⽤interface这个关键字来声明接⼝,修饰符⼀般都是public。
interface后⾯就是接⼝的名字MyComparable。
接⼝定义⾥⾯,声明了⼀个⽅法compareTo,但没有定义⽅法体,接⼝都不实现⽅法。接⼝⽅法不需要加修饰符,加与不加都是public 的,不能是别的修饰符。
再来解释⼀下compareTo⽅法:
⽅法的参数是⼀个Object类型的变量other,表⽰另⼀个参与⽐较的对象。
第⼀个参与⽐较的对象是⾃⼰
返回结果是int类型,-1表⽰⾃⼰⼩于参数对象,0表⽰相同,1表⽰⼤于参数对象
接⼝与类不同,它的⽅法没有实现代码。定义⼀个接⼝本⾝并没有做什么,也没有太⼤的⽤处,它还需要⾄少两个参与者,⼀个需要实现接⼝,另⼀个使⽤接⼝,我们先来说说如何实现接⼝:
java零基础该怎么学类可以实现接⼝,表⽰类的对象具有接⼝所表⽰的能⼒。我们来看⼀个例⼦,以前⾯介绍过的Point类来说明,我们让Point具备可以⽐较的能⼒,Point之间怎么⽐较呢?我们假设按照与原点的距离进⾏⽐较,下⾯是Point类的代码:
public class Point implements MyComparable {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public double distance(){
return Math.sqrt(x*x+y*y);
}
@Override
public int compareTo(Object other) {
if(!(other instanceof Point)){
throw new IllegalArgumentException();
}
Point otherPoint = (Point)other;
double delta = distance() - otherPoint.distance();
if(delta<0){
return -1;
}else if(delta>0){
return 1;
}else{
return 0;
}
}
@Override
public String toString() {
return "("+x+","+y+")";
}
}
我们解释⼀下:
Java使⽤implements这个关键字表⽰实现接⼝,前⾯是类名,后⾯是接⼝名。
实现接⼝必须要实现接⼝中声明的⽅法,Point实现了compareTo⽅法。
我们再来解释⼀下Point的compareTo实现:
Point不能与其他类型的对象进⾏⽐较,它⾸先检查要⽐较的对象是否是Point类型,如果不是,使⽤throw抛出⼀个异常,异常我们还没提到,后续⽂章讲解,此处可以忽略。
如果是Point类型,使⽤强制类型转换将Object类型的参数other转换为Point类型的参数otherPoint。
这种显式的类型检查和强制转换是可以使⽤泛型机制避免的,后续⽂章我们再介绍泛型。
⼀个类可以实现多个接⼝,表明类的对象具备多种能⼒,各个接⼝之间以逗号分隔,语法如下所⽰:
public class Test implements Interface1, Interface2 {
....
}
本⽂我们通过实例粗浅的了解了Java接⼝实现的相关知识,实际上Java接⼝实现是⼀节需要耗时很长的课程,我们只是刚刚开始,接下来的课程可以到本站的Java零基础⼊门教程中⾃主学习,好风凭借⼒,扬帆正当时,相信你⼀定能攻克难关,学有所成!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。