面向对象深入:继承04——接口

11.5 接口——特殊的抽象类

问题:某个子类想继承多个父类的优点,而Java不允许多重继承。

解决:采用接口实现多重继承

接口实质上是一种特殊的抽象类,定义特殊(interface),其内部只能包含静态常量抽象方法

11.5.1 接口的声明

接口的定义符不是class,而是interface

interface 接口名
{
  //类体:只能由静态常量或抽象方法组成      
}

接口中的常量默认为 public static final 类型

如接口中定义:

double PI = 3.14;

则实际为:

public static final double PI = 3.14;

******

也就是说,接口中定义的变量默认为静态常量型(public static final)。即使在定义过程中未声明为public static final,变量也默认为静态常量型。

******

interface infa
{
    double PI = 3.14;    //变量即使未写public static final,该变量也是默认public static final型
    abstract void out();    //方法默认为抽象方法
}

11.5.2 接口之间的继承

a. 接口可以继承父接口的成员变量和方法。

b. 接口支持多重继承,可以有多个父类

interface 子接口 extends 父接口1,父接口2,...

11.5.3 接口的实现

a. 我们定义接口是为了使用它实现多重继承。

b. 接口是特殊的抽象类。

c. 要使抽象类发挥功能,必须通过其非抽象子类覆盖掉父类中的所有抽象方法来实现对象。

    在Java中,要让接口发挥其功能,需要定义一个子类,实现并覆盖掉接口中的所有抽象方法——即接口的实现。

d. 实现接口是通过关键字 implements 来声明的。


public class Example1109
{
    public static void main(String[] args)
    {
        SonClass sc = new SonClass();
        sc.out();
    }
}
//SonClaa类继承了父接口infa,并实现了父接口的抽象方法
class SonClass implements infa    //implements infa->实现接口infa
{
    public void out()             //覆盖接口中的所有抽象方法
    {
        System.out.println(PI);            
    }
}
原文地址:https://www.cnblogs.com/jolene-wu/p/8290042.html