初学JAVA——接口

接口是什么

接口是java语言提供的另一种重要的功能,它的结构与抽象类非常相似。
接口被用来建立类与类之间的协议。
Java用多实现来代替多继承

接口的定义和实现

  • 接口的定义
[public] interface 接口名称 [extends 父接口(多个父接口用逗号隔开)]
{
    [public][static][final] 数据类型 成员变量名 = 常量;
    ...
    [public][abstract] 返回值的数据类型 方法名(参数);
}
  • 接口的实现
class 类名称 implements 接口名1,接口名2...
{
    //如果接口中的方法没有全部实现(重写),类需要定义为抽象类
} 

接口中的成员变量和成员方法的特点

  • 接口中成员变量的特点

所有的成员变量都是static和final的。在定义的时候不能不初始化。

import java.util.*;
public interface RandVals
{
    int NUMBER = 5;  //可以直接初始化
    public static final int NUMBER1 = 6; //public和static可写可不写
    Random RAND = new Random(47);
    int RANDNUMBER = RAND.nextInt(10); //可以用随机数初始化
    //int C   //此句错误,定义时不能不初始化
}
//接口中的成员变量储存在接口的静态存储区域,可以直接用接口名调用
public class TestRandVals
{
    public static void main(String[] args) 
    {
        System.out.println(RandVals.NUMBER);
        System.out.println(RandVals.NUMBER1);
        System.out.println(RandVals.RANDNUMBER);
    }
}
  • 接口中的成员方法的特点

所有成员方法都是public和abstract

接口的继承和嵌套

  • 接口的多继承

通过继承接口来扩展接口
在java中允许接口存在多继承而不允许类存在多继承
允许接口多继承的原因是接口中的方法没有方法体

interface A
{
    void fight();
}
interface B
{
    void swim();
}
interface C
{
    void run();
}
interface D extends A,B,C
{//继承接口A,B,C来扩展接口D
    void fly();
}
public class Main implements D
{
    public void fight() {};
    public void swim() {};
    public void run() {};
    public void fly() {};
}
  • 使用接口多继承的注意事项

    在接口的多继承中,如果继承两个具有相同方法名而返回值不同的接口时,会发生什么?

interface A
{
    void fight();
}
interface B
{
    int fight();
}
/*
interface C extends A,B
{
    //此接口会报错。
    //错误信息:The return types are incompatible for the inherited methods A.fight(), B.fight()
    //个人理解:C继承A,B后,相当于C中拥有两个方法:void fight()和 int fight(),java中不允许存在具有相同方法名而返回值不同的方法
}
*/

同样的道理,在实现接口中也会出现这样的问题

interface A
{
    void fight();
}

public class Main implements A
{
    // int fight() {};  此句错误:The return type is incompatible with A.fight()

}
  • 接口的嵌套

接口可以嵌套在接口中
特点:嵌套的接口一定是public的
实现某个接口时,并不需要实现嵌套在其内部的任何接口

interface A
{
    void a();
    interface B
    {
        void b();
    }
    //private interface C {}  此句错误:The interface member type C can only be public
}
class Main implements A
{
    public void a() {}
}
class Main1 implements A.B
{//嵌套接口的实现
    public void b() {}
}

接口也可以嵌套在类中
特点:类中的接口可以是私有的(private)。
私有的接口只能被定义它的类实现

class A
{
    public interface B
    {
        void b();
    }
    private interface B1    
    {//类中的接口可以是private的
        void b1();
    }
    public class C implements B1
    {//可以用public类实现private接口
        public void b1() {}
    }
    private class C1 implements B1
    {//可以用private类实现private接口
        public void b1() {}
    }
}

关于Java中接口的知识点,我目前只会这些。
有什么建议或者错误的地方,请评论,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值