Java接口的总结


活动地址:CSDN21天学习挑战赛

目录

什么是接口

接口的定义

接口的实现

接口和抽象类

接口多继承


什么是接口

编程定义上的接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。

接口是对强类型的面向对象编程语言特有东西,如C#,Java,通俗地说它的出现就是对这些强类型语言定义一个标准的入口然后供后续子孙继承使用。

举个例子,我们使用的手机,都有充电接口,目前主流的手机充电器接口主要有三种:Micro USB接口;USB Type C接口;Lightning接口。这三种接口规定了什么手机使用什么充电口,我们能分清充电头的形状,大小。

接口的定义

要定义一个接口使用interface关键字完成。

接口的方法可变量可以不用写修饰符和权限访问符

在接口里面只能够使用一种访问权限——public

public interface a {
    public static final String MSG = "Hello";// 全局常量
        // 抽象方法
    public abstract void print();
}
​
public interface b {
    String MSG = "Hello";// 全局常量
        // 抽象方法
    void print();
}
​

由于接口里面存在有抽象方法,所以接口对象不可能直接使用关键字new进行实例化的操作,所以接口的使用原则如下:

接口必须要有子类,但是此时一个子类可以使用implements关键字实现多个接口;

接口的子类(如果不是抽象类),必须要覆写接口中的全部抽象方法;

接口的对象可以利用子类对象的向上转型进行实例化操作。

接口的实现

接口的实现要用implements关键字

public class b implements a{
    @Override
    public void print() {
        System.out.println(MSG);
    }
}
class c{
    public static void main(String[] args) {
        a a1= new b();
        a1.print();
    }
}

以上的代码实例化了b类对象。由于现在b是a子类,所以b类的对象可以变成a接口的对象。

接口和抽象类

但是要知道一点,对于子类而言,除了接口之外,还可能会去继承抽象类,所以说一个子类既要继承抽象类又要去实现接口的话,那么请先使用extends继承,而后再使用implements实现。

public class b extends c implements a{
    @Override
    public void print() {
        System.out.println(MSG);
    }
​
    @Override
    void run() {
        System.out.println("我在跑!");
    }
}
abstract class c{
    abstract void run();
}
​
class test{
    public static void main(String[] args) {
        a a1 = new b();
        c c1 = new b();
        a1.print();
        c1.run();
    }
}

接口多继承

public class b extends c implements a,a1{
    @Override
    public void print() {
        System.out.println(a.MSG);
    }
​
    @Override
    void run() {
        System.out.println("我在跑!");
    }
​
    @Override
    public void print1() {
        System.out.println(a1.MSG);
    }
}
interface a {
    public static final String MSG = "Hello";// 全局常量
    // 抽象方法
    public abstract void print();
}
interface a1 {
    public static final String MSG = "Hi";// 全局常量
    // 抽象方法
    public abstract void print1();
}
interface a2 {
    public static final String MSG = "你好";// 全局常量
    // 抽象方法
    public abstract void print2();
}
//继承多个父接口
interface A extends a, a1, a2 {
    
}
​
abstract class c{
    abstract void run();
}
​
class test{
    public static void main(String[] args) {
        a a1 = new b();
        c c1 = new b();
        a1.print();
        c1.run();
    }
}

从上面代码可以看出,一个类只能继承一个抽象类,但是可以实现多个接口

一个抽象类只能够继承一个抽象的父类,而接口没有这个限制;

在Java里面,接口的主要功能是解决单继承局限问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值