接口interface

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();

}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值