【Java学习记录】十五 Java中的接口

概念

上一部分已经学过抽象类,接口的结构与抽象类分厂类似,而接口是比“抽象类”还“抽象”的“抽象类”,抽象类中还允许出现普通的方法,而接口中的方法全部都是抽象方法。接口全面地专业地实现了:规范和具体实现的分离。接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。

接口与抽象类的具体不同:

1.接口的数据成员都是静态的,并且必须初始化。

2.接口中的方法必须全部声明为abstract的,也就是说接口不能想抽象累那样拥有普通的方法,接口的方法全部都是抽象方法。

接口的定义

格式:

[public]  interface 接口名   [extends  父接口1,父接口2…]  {  //可以实现多继承

  [public] [static][final] 数据类型 成员名=常量;

   ...

  [public][abstract]返回值的数据类型   方法名(参数表);

}

 详细说明:

1. 访问修饰符:只能是public或默认

 2. 接口名:和类名采用相同命名机制。

3. extends:接口可以多继承

4. 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是(JAVA中的常量名一般全部大写)。

5. 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。

接口的实现和引用

利用接口创建新类的过程称为接口的实现。接口的实现类似于继承,指数不使用extends关键字,而是在声明一个类的同时用implements关键字来实现一个接口。实现的语句格式为:

class <类名>  implements 接口列表

{

...
}

要点:

 1. 子类通过implements来实现接口中的规范。

2. 接口不能创建实例,但是可用于声明引用变量类型。

3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。

 

public class TestInterface {
    public static void main(String[] args) {
        Volant volant = new Angel();
        volant.fly();
        System.out.println(Volant.FLY_HIGHT);
         
        Honest honest = new GoodMan();
        honest.helpOther();
    }
}
/**飞行接口*/
interface Volant { 
    int FLY_HIGHT = 100;  // 总是:public static final类型的;
    void fly();   //总是:public abstract void fly();
}
/**善良接口*/
interface Honest { 
    void helpOther();
}

/**Angle类实现飞行接口和善良接口*/
class Angel implements Volant, Honest{
    public void fly() {
        System.out.println("我是天使,飞起来啦!");
    }
    public void helpOther() {
        System.out.println("扶老奶奶过马路!");
    }
}

/**好人卡**/
class GoodMan implements Honest {
   public void helpOther() {
        System.out.println("扶老奶奶过马路!");
    }  
}
class BirdMan implements Volant {
    public void fly() {
        System.out.println("我是鸟人,正在飞!");
    }
}

接口的继承 

与普通的类相似,接口也可以实现继承,在定义一个接口的时候可以声明是某个接口的子接口。

与普通的继承不同的是,一个接口可以有一个以上的父接口,他么之间用逗号隔开。子接口继承父接口中的所有变量与方法,子接口可以覆盖父接口中的变量和方法。

多继承

interface A {
    void testa();
}
interface B {
    void testb();
}
/**接口可以多继承:接口C继承接口A和B*/
interface C extends A, B {
    void testc();
}
public class Test implements C {
    public void testc() {
    }
    public void testa() {
    }
    public void testb() {
    }
}

C接口同时继承了A和B接口,那么C接口的实现Test中就需要将A、B、C中的方法全部实现。

Java中是否有多继承?

答:Java的类只有单继承,没有多继承,但是Java的接口可以多继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值