什么是接口,接口跟类有什么区别?
一接口表示一个完全抽象类,其成员变量为常量,应该定义为publicstaticfinal.如果成员变量前没有添加修饰符,系统会默认修饰符为publicstaticfinal.所有的方法为publicabstract抽象方法
接口是一些抽象方法和常量所组成的集合,(1)接口可以定义多继承.多继承可以通过在extends后面使用多个父接口来实现.(2)接口不存在最高层,与类的最高层为Object类是不同的.(3)接口中的方法都是使用abstract修饰的方法;(4)接口中的成员变量默认为final定义的常量;
例如:指出下面程序的语法错误:
1)publicinterfaceExample{
2)publicdoubleprivateOne=0.0;
3)protectedintprotectedTwo=0;
4)publicintpublicpublicThree=10;
5)publicintpublicfour;
6)publicvoidmethodOne{
7)System.out.println("hareareyou!");
9)publicstaticvoidmethodTwo();
10)publicstaticfinalintmethodThree();
11)publicabstractvoidmethodFour();
改正:第2,3行对成员变量只能定义为public类型;第5行应该给成员变量赋值;第6,7,8行应该只给出方法头,不给出具体的方法;第9,10行应该只定义抽象方法;如下所示:
publicinterfaceExample{
publicdoubleprivateOne=0.0;
publicintprotectedTwo=0;
publicintpublicThree=10;
publicabstractvoidmethodOne();
publicabstractvoidmethodTwo();
publicabstractintmethodThree();
publicabstactvoidmethodFour();
接口中不能实现任何方法,它的方法必须在继承它的类中实现.
接口类的应用举列:
//-----------------------------------
//InterfaceExtend.java
//author:zuec
//email:zuec5@163.com
//------------------------------------
interfaceBiology{
abstractvoidbreath()://生物会呼吸
interfaceAnimalextendsBiology{
abstractvoidsex();//动物要有性别
abstractvoidate();//动物要吃饭
interfaceManextendsAnimal{
abstractvoidthink();//人类有思维
abstractvoidstudy();//人类要学习
classNormalManimplementsMan,Animal,Biology{
privaTestringname;
NormalMan(Stringname){
this.name=name;
publicStringgetname(){
returnname;
publicvoidbreath(){
System.out.println(name+":breathwithlung");
publicvoidsex(){
System.out.println(name+":havesex");
publicvoidate(){
System.out.println(name+":needfood"):
publicvoidthink(){
System.out.println(name+":canthinksomething");
publicvoidstudy(){
System.out.println(name+":studyjava");
publicclassInterfaceExtend{
publicstaticvoidmain(String[]args){
NormalManzuec=newNormalMan("zuec");
System.out.ptintln("下面是"+zuec.getname()+"的特点:");
zuec.breath();
zuec.sex();
zuec.think();
zuec.study();
运行结果:
下面是zuec的特点:
zuec:breathwithlung
zuec:havesex
zuec:canthinksomething
zuec:studyjava