[Interfaz de Java

Descripción de la interfaz

especificación de la interfaz es una clase común múltiplo.
La interfaz es un tipo de datos, es uno de los elementos más importantes de referencia: los métodos abstractos .

¿Cómo definir el formato de una interfaz:

public interface 接口名称 {
    // 接口内容
}

NOTA: Después de sustituir la palabra clave interface, el compilador genera un archivo de código de bytes sigue siendo: .java -> .class.

Si Java 7, a continuación, el contenido de la interfaz que se pueden incluir son:

  1. constante
  2. método abstracto

Si Java 8, adicionalmente puede contener:

  1. El método por defecto
  2. método estático

Si Java 9, puede contener adicionalmente:

  1. Los métodos privados

interfaz Paso

  1. La interfaz no se puede utilizar directamente, tiene que haber una "clase de implementación" a "aplicar" la interfaz.
    Formato:
    implementa la clase pública el nombre de interfaz nombre de clase de implementación {
    // ...
    }
  2. Clase que implementa la interfaz debe sobrescribir (implementado) toda la interfaz de métodos abstracto.
    Implementación: eliminar la palabra clave abstracta, además de los apoyos del cuerpo método.
  3. Crear una clase de implementación objeto, utilice.

Nota :
Si la clase no implementa todos los métodos abstractos de la interfaz, entonces la clase de implementación sobrescribe y que deben ser clase abstracta.

métodos de interfaz Abstract

/*
在任何版本的Java中,接口都能定义抽象方法。
格式:
public abstract 返回值类型 方法名称(参数列表);

注意事项:
1. 接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2. 这两个关键字修饰符,可以选择性地省略。(今天刚学,所以不推荐。)
3. 方法的三要素,可以随意定义。
 */
public interface MyInterfaceAbstract {

    // 这是一个抽象方法
    public abstract void methodAbs1();

    // 这也是抽象方法
    abstract void methodAbs2();

    // 这也是抽象方法
    public void methodAbs3();

    // 这也是抽象方法
    void methodAbs4();

}

método predeterminado de la interfaz

  1. El método de interfaz predeterminada, se puede interconectar objeto de clase, llamada directamente.
  2. El método por defecto de la interfaz, la interfaz también se puede implementar clases de sobreescritura.

A partir de Java 8, donde la interfaz le permite definir el método por defecto.
formato:

public default 返回值类型 方法名称(参数列表) {
    方法体
}
public interface MyInterfaceDefault {

    // 抽象方法
    public abstract void methodAbs();

    // 新添加了一个抽象方法
//    public abstract void methodAbs2();

    // 新添加的方法,改成默认方法
    public default void methodDefault() {
        System.out.println("这是新添加的默认方法");
    }

}

NOTA: El método de interfaz por defecto que puede resolver el problema de las mejoras de interfaz.

interfaz Método estático

Nota: El objeto no se puede lograr a través de la clase de interfaz con el método estático entre las llamadas de interfaz.
DERECHA: El nombre de la interfaz llamando directamente el método estático de ellos.
Formato:
Nombre de la interfaz de un nombre de método estático (parámetro) ;.

/*
从Java 8开始,接口当中允许定义静态方法。
格式:
public static 返回值类型 方法名称(参数列表) {
    方法体
}
提示:就是将abstract或者default换成static即可,带上方法体。
 */
public interface MyInterfaceStatic {

    public static void methodStatic() {
        System.out.println("这是接口的静态方法!");
    }

}

métodos de interfaz privadas:

métodos privados ordinarios y métodos estáticos privados

/*
问题描述:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
但是这个共有方法不应该让实现类使用,应该是私有化的。

解决方案:
从Java 9开始,接口当中允许定义私有方法。
1. 普通私有方法,解决多个默认方法之间重复代码问题
格式:
private 返回值类型 方法名称(参数列表) {
    方法体
}

2. 静态私有方法,解决多个静态方法之间重复代码问题
格式:
private static 返回值类型 方法名称(参数列表) {
    方法体
}
 */
public interface MyInterfacePrivateA {

    public default void methodDefault1() {
        System.out.println("默认方法1");
        methodCommon();
    }

    public default void methodDefault2() {
        System.out.println("默认方法2");
        methodCommon();
    }

    private void methodCommon() {
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("CCC");
    }

}

Interfaz constante

/*
接口当中也可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰。
从效果上看,这其实就是接口的【常量】。
格式:
public static final 数据类型 常量名称 = 数据值;
备注:
一旦使用final关键字进行修饰,说明不可改变。

注意事项:
1. 接口当中的常量,可以省略public static final,注意:不写也照样是这样。
2. 接口当中的常量,必须进行赋值;不能不赋值。
3. 接口中常量的名称,使用完全大写的字母,用下划线进行分隔。(推荐命名规则)
 */
public interface MyInterfaceConst {

    // 这其实就是一个常量,一旦赋值,不可以修改
    public static final int NUM_OF_MY_CLASS = 12;

}

Observe el uso de la interfaz

  1. La interfaz no es un bloque estático de código o método de construcción.
  2. Una clase padre directa es único, sino una clase puede implementar múltiples interfaces simultáneamente.
    Formato:
    MyInterfaceImpl clase pública los implementos MyInterfaceA, MyInterfaceB {
    // cubre todos los métodos abstractos de anulación
    }
  3. Si, existen múltiples interfaces entre los instrumentos de la clase métodos abstractos repetidos, entonces sólo sobrescrito una vez.
  4. Si la aplicación no cubre todos los métodos abstractos entre todas las interfaces de reescribir la clase, la clase de implementación debe ser una clase abstracta.
  5. Si la clase traba para múltiples interfaces entre método predeterminado duplicado, a continuación, la clase debe ser implementado para sobrescribir el método predeterminado de conflicto.
  6. Si un método de clase entre la matriz directa, y el método predeterminado de generar una interfaz entre un conflicto entre la clase padre con prioridad.

Las clases, las cuestiones de aplicación de herencia y de interfaz

  1. Entre las clases es una herencia simple. Sólo una clase padre directa.
  2. Entre las clases y las interfaces se implementan múltiples. Una clase puede implementar múltiples interfaces.
  3. Entre la interfaz y la interfaz es la herencia múltiple.

precauciones:

  1. método abstracto, si una interfaz entre una pluralidad de padres repite, no importa.
  2. Las interfaces método predeterminado entre múltiples padres si se repite, a continuación, el sub-interfaz debe reemplazar el método por defecto de reescritura, [y] con la palabra clave predeterminada.
Publicados 218 artículos originales · ganado elogios 6 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/u011035397/article/details/104991987
Recomendado
Clasificación