Java接口

本文详细介绍了Java中的接口概念,包括接口作为引用数据类型、多继承、默认方法和静态方法等特性。通过示例展示了类如何实现接口,以及接口间的多继承。同时,讨论了接口在多态和抽象类实现中的作用,强调了使用接口的优势。
摘要由CSDN通过智能技术生成
*
* 引用数据类型:类、数组、接口
* 接口是一种引用数据类型,可看做是一种特殊的类,是Java为了解决没有多继承引起的功能变弱的问题
*   一个类只能有一个父类,但可以实现多个接口
*   接口不能代表一类实体,只能代表功能或属性,单纯的规范,时功能或属性独立出来,而不依赖于实体
*
* 创建接口方式:class变成interface,父子关系由extends变成implements
*   类和类:使用extends实现,单继承
*   类和接口:使用implements实现,以逗号隔开,如:class A implements B,C,D (多实现)
*       1 非抽象类实现接口后,必须实现所有抽象方法
*       2 抽象类实现接口后,可实现0~N个抽象方法
*   接口和接口:使用extends,并且是多继承,如:interface A extends B,C,D
*
* 语法:
*       interface 接口名{ }
* 注意:
*   1 接口中所有变量都是为常量 public static final xxx, 且 public static final可以省略
*   2 接口中的方法 默认都是 public abstract 的,也就是抽象方法,且 public abstract 可以省略
*   3 接口中没有构造方法,也不能被实例化对象
*Java1.8开始,接口中可以有 默认方法和静态方法
*   可看做一个抽象类,默认方法相当于成员方法,使用相同于成员方法,静态方法直接接口名调用
*   优先使用接口,类和接口之间是多实现,使用接口还可以保留类的继承
* */

public class _01_Interface {

    public static void main(String[] args) {
        // 接口中静态方法直接调用,可用接口名直接调用
        _01_Interface_Test.m4();
//        _01_Interface_Test.m5(); // 默认方法,需要使用对象调用,接口名调用报错

        // 接口中没有构造方法,不能实例化对象,报错
        // 如何实现调用默认方法? 通过类实现,实例化类对象调用。
//        _01_Interface_Test inte = new _01_Interface_Test();

        // 接口中默认方法调用
        _01_Inte_Test inte_test = new _01_Inte_Test();
        inte_test.m5();

        // 接口中发生多态
        _01_Interface_Test t = new _01_Inte_Test();
        System.out.print("接口中发生多态:");
        t.m5();
    }
}

interface _01_Interface_Test{

    // 常量声明,默认是 public static final 修饰的(psf),以下都一样
    int a = 1;
    static int b = 1;
    static final int c = 1;
    public static final int d = 1;

    // 方法声明,默认 public abstract 修饰,以下都一样,都默认抽象方法
    void m1();
    public void m2();
    public abstract void m3();

    // 1.8新特性 静态方法
    public static void m4(){
        System.out.println("接口中的静态方法");
    }

    // 1.8新特性 默认方法(理解为已实现的成员方法),必须用default修饰符 修饰
    public default void m5(){
        System.out.println("接口中的默认方法");
    }
}

interface _02_Interface_Test{
    void _02_IF();
}

// 接口之间多继承,用逗号隔开
interface _03_Interface_Test extends _01_Interface_Test,_02_Interface_Test{
    void _03_IF();
}

// 类实现多接口,用逗号隔开
class _01_Inte_Test implements _01_Interface_Test,_02_Interface_Test,_03_Interface_Test{

    // 必须实现接口中声明的所有抽象方法
    // 接口 _01_Interface_Test 中的抽象方法
    @Override
    public void m1() {

    }

    @Override
    public void m2() {

    }

    @Override
    public void m3() {

    }

    // 接口 _02_Interface_Test 中的抽象方法
    @Override
    public void _02_IF() {

    }

    // 接口 _03_Interface_Test 中的抽象方法
    @Override
    public void _03_IF() {

    }
}

// 抽象类实现接口,抽象方法可实现也可不实现
abstract class _02_Inte_Test implements _01_Interface_Test,_02_Interface_Test{
    @Override
    public void m1() {
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值