zoukankan      html  css  js  c++  java
  • Java接口

    在 Java 中,可以通过两种形式来达到抽象的目的,一种是抽象类,另外一种就是接口。

    《《《《一个类只能继承一个抽象类,但却可以实现多个接口。》》》》》

    接口是通过 interface 关键字定义的,它可以包含一些常量和方法。

    public interface Electronic {
        // 常量
        String LED = "LED";

        // 抽象方法
        int getElectricityUse();

        // 静态方法
        static boolean isEnergyEfficient(String electtronicType) {
            return electtronicType.equals(LED);
        }

        // 默认方法
        default void printDescription() {
            System.out.println("电子");
        }
    }

    1)接口中定义的变量会在编译的时候自动加上 public static final 修饰符,也就是说 LED 变量其实是一个常量。【换句话说,接口可以用来作为常量类使用,还能省略掉 public static final

    2)没有使用 privatedefault 或者 static 关键字修饰的方法是隐式抽象的,在编译的时候会自动加上 public abstract 修饰符。也就是说 getElectricityUse() 其实是一个抽象方法,没有方法体——这是定义接口的本意。

    3)静态方法无法由(实现了该接口的)类的对象调用,它只能通过接口的名字来调用,比如说 Electronic.isEnergyEfficient("LED")

    02、定义接口的注意事项

    • 接口中允许定义变量

    • 接口中允许定义抽象方法

    • 接口中允许定义静态方法(Java 8 之后)

    • 接口中允许定义默认方法(Java 8 之后)

    1)接口不允许直接实例化。

    2)接口可以是空的,既不定义变量,也不定义方法。

    3)不要在定义接口的时候使用 final 关键字,否则会报编译错误,因为接口就是为了让子类实现的,而 final 阻止了这种行为。

    4)接口的抽象方法不能是 private、protected 或者 final。

    5)接口的变量是隐式 public static final,所以其值无法改变。

    03、接口可以做什么

    1)使某些实现类具有我们想要的功能

    2)Java 原则上只支持单一继承,但通过接口可以实现多重继承的目的。

    3)实现多态。===【就是同一个事件发生在不同的对象上会产生不同的结果,】

    多态的存在 3 个前提:

    1、要有继承关系,Circle 和 Square 都实现了 Shape 接口
    2、子类要重写父类的方法,Circle 和 Square 都重写了 name() 方法
    3、父类引用指向子类对象,circleShape 和 squareShape 的类型都为 Shape,但前者指向的是 Circle 对象,后者指向的是 Square 对象。

    04、接口与抽象类的区别

    1)语法层面上

    • 接口中不能有 public 和 protected 修饰的方法,抽象类中可以有。

    • 接口中的变量只能是隐式的常量,抽象类中可以有任意类型的变量。

    • 一个类只能继承一个抽象类,但却可以实现多个接口。

  • 相关阅读:
    设计模式(六)—原型模式Prototype(创建型)
    hdu_2039_三角形_解题报告
    古代赌局 俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。 有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把
    读《Boost程序库完全开发指南》
    使用HttpSessionListener接口监听Session的创建和失效
    HDU2317:Nasty Hacks
    意淫的需求要不得
    enumerate(s)与range(len(s))的作用是相同
    一种数据展示方式,UI设计新颖,供大家参考(源码部分) (demo已经上传)
    RMAN Compressed Backupset
  • 原文地址:https://www.cnblogs.com/KL2016/p/14580662.html
Copyright © 2011-2022 走看看