接口interface

  • Post author:
  • Post category:其他


Java

只支持单一继承,不支持多重继承,即一个类只能继承一个父类,这一缺陷可以通过接口来弥补。


Java


允许一个类实现多个接口,这样使程序更加灵活、易扩展。


定义接口


访问符

interface

接口名


[extends


父接口


1


,父接口


2…]

{

//

接口体

}

1.一个接口可以继承多个父接口,但接口只能继承接口,不能继承类。

2.

在接口体里可以包含静态常量、抽象方法、内部类、内部接口以及枚举的定义, 从

java8

版本开始允许接口中定义默认方法、类方法;

3.

与类的默认访问符不同,接口体内定义的常量、方法等都默认为

public

,可以 省略


public


关键字,即当接口中定义的常量或方法不写


public


,其访问权限 依然是


public



4.接口里定义的成员变量只能是常量

5.

在接口里定义的普通方法只能是

public

的抽象方法,即没有方法体,系统会自   动为其添加


public abstract


,因为接口总是要被其他类实现的,所以方法是公 共的。

6.

接口中定义默认方法,需要使用

default

修饰,可以有方法体和内容

7.

在接口中定义类方法,需要使用

static

修饰,通过接口的名称调用类方法

8.接口不能直接实例化,但可以使用接口声明引用类型的变量,该变量可以引用 到接口的实现类的实例对象上。接口的主要用途就是被实现类实现,一个类 可以实现一个或多个接口,接口之间用逗号进行间隔

9.[

访问符


] class


类名


implements


接口


1[


,接口


2.


。。


]{



实体


}

10.一个类在实现一个或多个接口是,这个类必须完成实现这些接口中定义的所 有抽象方法,否则该类必须定义为抽象类

11.一个类实现某个接口时,该类将会获得接口中定义的常量、方法等,因此可 以将实现接口理解为一种特殊的继承,相当于实现类继承了一个彻底抽象的 类


定义接口:



public


interface


Myinterface {


//接口里定义的曾远变量只能是常量



int



MAX_VALU



= 50;


//接口里定义的普通方法只能是public的抽象方法



void



delMsg

();



void


addMsg(String

msg

);


//在接口中定义默认方法,需要使用default修饰



default


void


print(String…

msgs

){



for


(String

msg

:

msgs

){

System.



out



.println(

msg

);

}

}


//在接口中定义类方法,需要使用



ststic



修饰



static


String ststicTest(){



return



“在接口里的类方法”

;

}


实现接口:



package


p2;



public


class


ImInterfaceDemo


implements


Myinterface{


//定义一个字符串数组,长度是接口中定义的常量MAX—SIZE



private


String[]

msgs

=


new


String[Myinterface.



MAX_VALU



];


//记录消息个数



private


int



num

= 0;


//实现接口中的方法



public


void


delMsg() {



if


(

num

<= 0 ){

System.



out



.println(

“消息队列以空,删除失败!”

);

}


else


{


//删除消息,



num




数量减

1


msgs

[–

num

]=


null


;

}

}


//实现接口中的方法



public


void


addMsg(String

msg

) {



if


(

num

>=Myinterface.



MAX_VALU



){

System.



out



.println(

“消息队列已满,num数量失败!”

);

}


else


{


//将消息添加到字符串数组,



num




数量加

1


msgs

[

num

++] =

msg

;

}

}


//定义一个类实现自己的方法



public


void


showMsg(){


//输出消息队列中德信息



for


(


int



i

= 0;

i

<

num

;

i

++){

System.



out



.println(

msgs

[

i

]);

}

}



public


static


void


main(String[]

args

) {


//实例化一个接口实现类的对象,并将其赋值给一个接口变量引用

Myinterface

mi

=


new


ImInterfaceDemo();


//调用接口的默认方法,默认方法必须通过实例对象来调用


mi

.print(

“sda”

,

“dasd”

,

“da”

);


//调用接口的类方法,直接通过“接口名.类方法()”来调用

System.



out



.println(Myinterface.

ststicTest

());

System.



out



.println(

“………..”

);


//实例化接口实现类

ImInterfaceDemo

ifd

=


new


ImInterfaceDemo();


//添加信息


ifd

.addMsg(

“dasdsd”

);


ifd

.addMsg(

“dasdsd”

);


ifd

.addMsg(

“dasdsd”

);


ifd

.addMsg(

“dasdsd”

);


//输出信息


ifd

.showMsg();

System.



out



.println(

“………….”

);


//删除一个信息


ifd

.delMsg();

System.



out



.println(

“删除一个数据后,剩下的信息是:”

);


ifd

.showMsg();

}

}



版权声明:本文为u012953914原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。