接口的基本概念

目录

一 、接口的基本概念 

二 、接口的定义

三 、接口的实现

四 、继承抽象类实现接口

五 、抽象类实现接口

六 、接口继承接口


 

一 、接口的基本概念 

接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,是由全局常量和公共的抽象方法所组成。

【接口的定义格式】

interface 接口名称 {

         全局常量;

         抽象方法;

}

 注意在接口中定义的抽象方法访问权限必须为public

 

二 、接口的定义

interface A {
    public static final String AUTHOR = "Java";  //定义全局常量
    public abstract void print();                //定义抽象方法
    public abstract String getInfo();            //定义抽象方法
}

 在接口的基本概念中已经明确声明接口是由全局常量和抽象方法组成,所以在开发中可以简化为如下格式:

interface A {
    String AUTHOR = "Java";  //定义全局常量
    void print();                //定义抽象方法
    String getInfo();            //定义抽象方法
}

 

三 、接口的实现

与抽象类一样,接口的使用也必须通过子类,子类通过 implements 关键字实现接口

【实现接口格式】

class 子类 implements 接口A,接口B,......{

}

从定义格式可以发现,一个子类可以同时实现多个接口,这就摆脱了Java的单继承局限

interface A {  //接口A
    String AUTHOR = "Java";  //定义全局常量
    void print();            //定义抽象方法
    String getInfo();        //定义抽象方法
}

interface B {  //接口B
    public void say();  //定义抽象方法
}

class C implements A,B {  //子类C实现接口A,接口B
    public void print(){   //覆写接口A的抽象方法
        System.out.println("Hello World");
    }
    public String getInfo(){  //覆写接口A的抽象方法
        return "info";
    }
    public void say(){   //覆写接口B的抽象方法
        System.out.println("author:" + AUTHOR);
    }
}

public class InterfaceDemo01 {
    public static void main(String[] args) {
        C c = new C();  //实例化子类对象
        c.print();   //调用被覆写过的方法
        System.out.println(c.getInfo()); //调用被覆写过的方法
        c.say();     //调用被覆写过的方法
    }
}

 程序运行结果:

以上程序中,一个子类同时实现了两个接口 ,那么在子类中就必须同时覆写两个接口中的全部抽象方法。

 

四 、继承抽象类实现接口

【继承抽象类实现接口格式】

class 子类 extends  抽象类 implements 接口A,接口B,....{

}

 

interface A {  //接口A
    String AUTHOR = "Java";  //定义全局常量
    void print();            //定义抽象方法
    String getInfo();        //定义抽象方法
}

abstract class B {  //抽象类B
    public abstract void say();  //定义抽象方法,必须使用 abstract 关键字声明
}

class C extends B implements A {  //子类继承抽象类B实现接口A
    public void print(){   //覆写接口A的抽象方法
        System.out.println("Hello World");
    }
    public String getInfo(){  //覆写接口A的抽象方法
        return "info";
    }
    public void say(){   //覆写抽象类B的抽象方法
        System.out.println("author:" + AUTHOR);
    }
}

public class InterfaceDemo02 {
    public static void main(String[] args) {
        C c = new C();  //实例化子类对象
        c.print();   //调用被覆写过的方法
        System.out.println(c.getInfo()); //调用被覆写过的方法
        c.say();     //调用被覆写过的方法
    }
}

程序执行结果:

 

五 、抽象类实现接口

在Java中,允许一个抽象类实现多个接口

interface A {  //接口A
    String AUTHOR = "Java";  //定义全局常量
    void print();            //定义抽象方法
    String getInfo();        //定义抽象方法
}

interface B {  //接口B
    void say();
}

abstract class C implements A,B {  //抽象类实现多个接口
    public abstract void echo();  //定义抽象方法,必须使用 abstract 关键字声明
}

class D extends C {
    public void print(){   //覆写接口A的抽象方法
        System.out.println("Hello World");
    }
    public String getInfo(){  //覆写接口A的抽象方法
        return "flag";
    }
    public void say(){   //覆写接口B的抽象方法
        System.out.println("author:" + AUTHOR);
    }
    public void echo(){  //覆写抽象类C的抽象方法
        System.out.println("echo");
    }
}

public class InterfaceDemo03 {
    public static void main(String[] args) {
        D d = new D();  //实例化子类对象
        d.print();   //调用被覆写过的方法
        System.out.println(d.getInfo()); //调用被覆写过的方法
        d.say();     //调用被覆写过的方法
        d.echo();    //调用被覆写过的方法
    }
}

程序运行结果:

 

六 、接口继承接口

在Java中,一个接口是不允许继承抽象类的,但是允许一个接口继承多个接口

【接口的继承格式】

interface 子接口 extends 父接口A,父接口B,...{

}

interface A {  //接口A
    String AUTHOR = "Java";  //定义全局常量
    void print();            //定义抽象方法
    String getInfo();        //定义抽象方法
}

interface B {  //接口B
    void say();
}

interface C extends A,B{
    void echo();
}

class D implements C {
    public void print(){   //覆写接口A的抽象方法
        System.out.println("Hello World");
    }
    public String getInfo(){  //覆写接口A的抽象方法
        return "interface";
    }
    public void say(){   //覆写接口B的抽象方法
        System.out.println("author:" + AUTHOR);
    }
    public void echo(){  //覆写接口C的抽象方法
        System.out.println("many interface");
    }
}

public class InterfaceDemo03 {
    public static void main(String[] args) {
        D d = new D();  //实例化子类对象
        d.print();   //调用被覆写过的方法
        System.out.println(d.getInfo()); //调用被覆写过的方法
        d.say();     //调用被覆写过的方法
        d.echo();    //调用被覆写过的方法
    }
}

程序运行结果:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值