• 面向对象深入:继承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);            
        }
    }
  • 相关阅读:
    蠢货之对闭包表的扩展
    蠢货之TaskCompletionSource 带事件的同步调用
    SQLSERVER新建存储过程模板
    缓存更新
    写给”源码爱好者“
    区块链-一个不神秘却总能骗人的东西
    graceful-upgrades-in-go
    谁也逃不过C++
    Go的问题
    面试
  • 原文地址:https://www.cnblogs.com/jolene-wu/p/8290042.html
Copyright © 2020-2023  润新知