unicorn的java课堂笔记(7)

作者在 2006-12-17 21:31:00 发布以下内容

第七节课

接 口

接口在java中尤其是面向对象语言中是一个很重要的概念.
java中使用接口概念的原因:java不支持多继承性,即一个类只能有一个父类.单继承性使得java简单,易于管理程序.为了克服单继

承的缺点,java使用了接口.

一个类可以实现多个接口.使用关键字interface来定义一个接口.接口的定义和类的定义很相似,分为接口的声明和接口体.

1.接口声明及接口体

前面曾使用class关键字来声明类,接口通过使用关键字interface来声明.格式

interface 接口的名字

接口体中包含常量的定义和方法定义两部分.接口体中只进行方法的声明,不允许提供方法的实现,所以,方法的定义没有方法体,且

用";"结尾.如

程序代码:

interface Printable
{
final int max=100;
void add();
float sum(float x,float y);
}

2.接口的使用
一个类通过使用关键字implements声明自己使用一个或多个接口.如果使用多个接口,用逗号隔开接口名.如:
class A implements Printable,Addable

类A使用接口Printable 和接口Addable

子类使用接口格式也一样,如:
class B extends A implements Printable,Addable
子类B使用接口Printable 和接口Addable

如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体.需要注意的是:在类中实现接口的

方法时,方法的名字,返回值类型,参数个数及类型,必须与接口中的完全一致.特别要注意的是:接口中的方法默认是public

abstract方法,所以类在实现接口方法时必须给出方法体,并且一定要用public来修饰,而且接口中的常量默认是public static常

量.

由于接口体中只有常量定义和public的abstract方法定义,程序在编写接口时,允许省略常量前面的public,final和static修饰,也

允许省略方法前的public和abstract修饰.另外,如果接口方法的返回类型不是void型,那么在类中实现接口方法时,方法体至少要

有一个return语句;如果是void型,类体除了两个大括号外,也可以没有任何语句.


java提供的接口都在相应的包中,通过引入包可以使用java提供的接口.也可以自己定义接口,一个java源文件就是由类和接口组成的.

虽然"使用接口"的描述的很罗嗦,看看下面的例子就容易掌握了

程序代码:


interface Computable//定义接口
{  int MAX=100;
   int f(int x);//声明方法(是public abstrac型的,只是省略了关键字)
}
class China implements Computable
{  int number;
   public  int f(int x) //不要忘记public关键字
{  int sum=0;
      for(int i=1;i<=x;i++)
{ sum=sum+i;
       }
       return sum;
   }
}
class Japan implements Computable
{  int number;
   public int f(int x)//不要忘记public关键字
{  return 44+x;
   }
}
public class E
{  public static void main(String args[])
{  China zhang;
      Japan henlu;
      zhang=new China();  
      henlu=new Japan();  
      zhang.number=991898+Computable.MAX;
      henlu.number=941448+Computable.MAX;
      System.out.println("number:"+zhang.number+"求和"+zhang.f(100));
      System.out.println("number:"+henlu.number+"求和"+henlu.f(100));
   }
}      

还要注意的就是如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类,如

程序代码:


interface Computable
{final int max=100;
void speak(String s);
int f(int x);

abstract class A implements Computable//类A使用的接口但类体中并没有实现接口中speak()的

转帖&&连载 | 阅读 1417 次
文章评论,共0条
游客请输入验证码