接口的最主要的作用是达到统一访问
那么什么叫统一访问呢
举个例子
你这样想,我做一个USB接口,有个读的抽象方法 那叫read()吧,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了
这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同
近日在编程中用到接口知识,由于课本中对接口描述较少,所以想从网上查找资料,但网上的资料大多也只是冗长的描述,所以在此提供一自己写的实例,供大家参考:
原题是这样的:在java中,定义一个接口,声明计算长方形面积和周长的抽象方法,再用一个类去实现这个接口,再编写一个测试类去使用这个接口。
首先,接口必须单独存放,如果我们用eclipse编程的话,它们提示:The public type **** must be defined in its own file,意思是必须要定义在其自己的文件中,所以要为接口文件单独存放起来,举例,我们的接口要实现获到矩形的长,宽,面积,周长,所以定义以下的接口。
public interface calrect {
public abstract int calarea();
public abstract int calgirth();
public abstract int getx();
public abstract int gety();
}
注意,定义接口就像定义类一样,接口的访问控制符只能用public,用public定义的接口可以被所有的类和包引用,而缺省的则只能被同一个包中的其他类和接口引用,这符合JAVA中访问控制符的一般要求,关于接口再引用其他接口则是后话。以上接口文件名为calrect.java.另外需要指出的是接口中不能给方法给出方法体。
接下来,需要定义一个类来实现接口,因为不知道JAVA的内置矩形类是什么名,所以为了安全,将该类定义为RRect,这可以认为是一种安全策略。关于implements,可以参考其他资料。该类引用了接口calrect,所以必须对calrect中的方法一一实现。
//定义矩形类 应用接口
class RRect implements calrect{
private int x;
private int y;
public RRect (){
x=3;y=4;
}
public int calarea(){
return x*y;
}
public int calgirth(){
return x*2+y*2;
}
public int getx(){
return x;
}
public int gety(){
return y;
}
}
//接下来,定义一个测试类,所谓测试类,我理解为定义一个类,在其定义类RRect的对象,并验证其中的方法,看看是不是可以正常使用
//定义Class1类
public class Class1{
RRect rect;
public static void main(String []args){
RRect rect=new RRect();
System.out.println("矩阵的长"+ rect.getx());
System.out.println("矩阵的宽"+ rect.calarea());
System.out.println("矩阵的面积"+ rect.calarea());
System.out.println("矩形的周长 "+rect.calgirth());
}
}
运行结果:
矩阵的长3
矩阵的宽12
矩阵的面积12
矩形的周长 14
注:接口单存放,接口实现类和测试类可以存放在一个文件中