【java】接口定义,接口的继承,接口的实现,接口和抽象的共同点,差别

本文介绍了Java中的接口,作为一种解决单继承限制的机制。接口是抽象类,包含无方法体的抽象方法和常量。接口可以被继承,并且支持多重继承。类通过implements关键字实现接口,可以实现多个接口。接口与抽象类的主要区别在于接口只包含抽象方法,不允许定义普通方法、静态方法和实例变量,而抽象类则可以。此外,一个类只能直接继承一个抽象类,但可以实现多个接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java只支持单重继承,不支持多重继承,即一个类只能有一个父类,但是在实际应用中,又经常需要使用多重继承来解决问题,为了解决该问题,java提供了接口来实现多重继承功能。

【接口的简介】:

接口是一个抽象类, 接口中所有的方法都没有方法体。抽象类里面可以定义抽象方法,只有连接上接口,就可以实现想要的功能。

【接口的定义】:

interface是定义接口的关键字,接口的定义和类的定义很相似(也分为接口的声明和接口体),其中接口体又常量定义和方法定义两部分。

格式如下:

[修饰符] interface 接口名 [extends 父类接口名列表]{

     [public] [static] [final] 常量;

    [public] [abstract] 方法;

}

接口中的方法只有定义,而没有被实现。

【java接口文件名必须和接口名相同】

【接口的继承】:

接口是可以被继承的,但是接口的继承和类的继承不太一样,接口可以实现多重继承,也就是说接口可以有多个直接父接口。和类相似的是,当子类继承父类接口时,子类可以获得父类所以的抽象方法,常量属性。

当一个接口继承多个父类接口时,多个父类接口排列在extends关键字之后,各个父类接口之间使用英文逗号隔开,

public interface interfaceA {
    int one=1;
    void sayA();
}
public interface interfaceB{
    int two=2;
    void sayB();
}
public interface interfaceC extends interfaceA,interfaceB{
    int three=3;
    void say();
}
public class app{
    public static void main(String[] args) {
        System.out.println(interfaceC.one);
        System.out.println(interfaceC.two);
        System.out.println(interfaceC.three);
    }
}

【接口的实现】:

接口可以被类实现,也可以被其他接口继承,在类中实现接口,可以使用关键字implements。

语法格式:

[修饰符] class <类名> [extends 父类名] [implements 接口列表]{

}

每个类只能实现单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号隔开,这是就可能出现常量或者方法名冲突的情况,解决该问题,如果常量冲突,则需要明确指定常量的接口,这就可以通过“接口名.常量”实现,如果出现方法冲突,则只要实现一个方法就可以了。

【接口和抽象类】:

共同点如下:

1、接口与抽象类都不能被实例化,能被其他类实现和继承。

2、接口和抽象类中都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

差别:

接口指定了系统各模块间遵循的标准,体现的是一种规范,因此,接口一旦被定义之后不应该经常被改变,一旦改变会对整个系统造成影响,对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务。当多个应用程序之间使用接口时,接口是多个程序之间的通信标准。

而抽象类作为多个子类的父类,它体现的是一种模板式设计,这个抽象父类可以被当成是中间产品。

具体差别如下:

1、接口中只能包含抽象方法,不包含普通方法,抽象类中可以包含普通方法。

2、接口中不能定义静态方法,抽象类中可以定义静态方法。

3、接口中只能定义静态常量属性,不能定义普通属性,抽象类里可以定义静态常量属性,也可以定义普通属性。

4、接口不能包含构造器,抽象类可以包含构造器,抽象类里面的构造器是为了让其子类调用并完成初始化操作。

5、接口中不能包含初始化块,但是抽象类可以

6、一个类最多只能有一个直接父类,包括抽象类,但是一个类可以实现多个接口

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值