JAVA新手入门(6)
2963 点击·0 回帖
![]() | ![]() | |
![]() | } [/code] 还要注意的就是如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类,如 复制代码 interface Computable {final int max=100; void speak(String s); int f(int x); abstract class A implements Computable//类A使用的接口但类体中并没有实现接口中speak()的方法,所以此类必须是抽象类 {public int f(int x)//只是实现了接口中的一个方法 {int sum=0; for(int i=1;i<=x;i++) sum+=i; return } } 类实现的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用.这理解不难,因为前面讲过final修饰的常量,在内存程序加载字节码时,内存就给常量分配了一个固定空间,不可以改变(直到程序结束),所以这个地址是固定了,并且这个常量是来自一个接口,所以此接口名或者使用这个接口的类的对象可以直接调用这个常量喽.方法也是一样的. 接口声明时,如果关键字interface前面加public关键字,就称这样的接口是一个public接口.public接口可以被任何一个类使用.如果一个接口不加public修饰,就称为友好接口类,友好接口可以被同一包中的类使用. 如果父类使用了某个接口,那么子类也就自然使用了该接口,子类不必再使用关键字implements声明自己使用这个接口了. 接口也可以被继承,即可以通过关键字extends声明一个接口是另一个接口的子接口.由于接口中的方法和常量都是public的,子接口将继承父接口中的全部方法和常量. 3.理解接口 讲了半天,你已经知道如何定义和使用接口了,但你会疑问,使用接口的好处在哪里?其实接口的思想就在于它可以增加很多类都需要实现的功能,使用相同的接口类不一定由继承的关系,就是象各种各样的商品,他们可能隶属不同的公司,工商部门要求不管哪里的商品必须具有显示商标的功能(即实现同一接口),但商标的具体制作由各个公司自己去实现,这就是接口的灵活所在.再比如,你是一个项目的主管,你需要管理许多部门,这些部门要开发一些软件所需要的类,你可能要求某个类实现一个接口,也就是说你对一些类是否具有这个功能非常关心,但不关心功能的具体实现.比如,这个功能是speaklove,但你不关心是用汉语实现功能还是用英语实现speaklove.还是用个例子来理解一下接口,如: [code] interface 收费 //定义接口收费功能 { public void 收取费用(); } interface 调节温度 //定义接口调节温度功能 { public void controlTemperature(); } class 公共汽车 implements 收费 //一般的公共汽车只具有收费功能,空调车少 { public void 收取费用() { System.out.println("公共汽车:一元/张,不计算公里数"); } } class 出租车 implements 收费, 调节温度//出租车比较高级当然除了收费功能还有空调喽 { public void 收取费用() { System.out.println("出租车:1.60元/公里,起价3公里"); } public void controlTemperature() { System.out.println("安装了Hair空调"); } } class 电影院 implements 收费,调节温度//电影院有收费和调节温度功能 { public void 收取费用() { System.out.println("电影院:门票,十元/张"); } public void controlTemperature() { System.out.println("安装了中央空调"); | |
![]() | ![]() |