[Interface Java

Interface Descrição

especificação de interface é um múltiplo classes comuns.
A interface é um tipo de dados, é um dos mais importantes elementos de referência: os métodos de sumário .

Como definir o formato de uma interface:

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

NOTA: Depois de substituir a interface palavra-chave, o compilador gera arquivo de bytecode ainda é: .java -> .class.

Se o Java 7, em seguida, o conteúdo da interface que podem ser incluídos são:

  1. constante
  2. método abstrato

Se o Java 8, pode ainda conter:

  1. O método padrão
  2. método estático

Se Java 9, pode ainda conter:

  1. métodos privados

passo interface

  1. Interface não pode ser usado diretamente, deve haver uma "classe de implementação" para "implementar" a interface.
    Formato:
    implementos Classe pública o nome da interface nome da classe implementação {
    // ...
    }
  2. Classe que implementa a interface deve substituir (implementado) toda a relação métodos abstrato.
    Implementação: remova a palavra-chave abstrato, além das chaves corpo do método.
  3. Criar uma classe de implementação objeto, use.

Nota :
Se a classe não implementa todos os métodos abstratos interagir substituído, então a classe de implementação e que eles devem ser classe abstrata.

métodos de interface abstrata

/*
在任何版本的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 padrão de interface

  1. O método de interface padrão, ele pode interagir classe de objeto, chamado diretamente.
  2. O método padrão de interface, a interface também pode ser implementado aulas de substituição.

Começando Java 8, onde a interface permite que você defina o método padrão.
formato:

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

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

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

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

}

NOTA: O método de interface padrão que pode resolver o problema das atualizações de interface.

Interface método estático

Nota: O objeto não pode ser alcançado através da classe de interface com o método estático entre as chamadas de interface.
DIREITA: O nome da interface diretamente chamando o método estático deles.
Formato:
Nome da interface de um nome 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 interface Privado:

métodos privados comuns e 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");
    }

}

interface de 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 o uso da interface

  1. A interface não é um bloco estática de código ou método de construção.
  2. Uma classe controladora direta é única, mas uma classe pode implementar várias interfaces simultaneamente.
    Formato:
    MyInterfaceImpl Classe pública os implementos MyInterfaceA, MyInterfaceB {
    // cobre todos os métodos abstratos override
    }
  3. Se várias interfaces entre os instrumentos de classe, existem métodos abstratos repetidas, então, apenas substituído uma vez.
  4. Se a implementação não abrange todos os métodos abstratos entre todas as interfaces reescrever classe, a classe de implementação deve ser uma classe abstrata.
  5. Se a classe bloqueia para múltiplas interfaces entre método padrão duplicado, em seguida, a classe deve ser implementado para substituir o método padrão de conflito.
  6. Se um método de classe entre a controladora direta, e o método padrão de gerar uma interface entre um conflito entre a classe pai com prioridade.

Classes, questões de implementação de herança e interface

  1. Entre as classes é uma única herança. Apenas uma classe controladora direta.
  2. Entre as classes e interfaces são implementadas múltiplas. Uma classe pode implementar várias interfaces.
  3. Entre a interface ea interface é herança múltipla.

precauções:

  1. método resumo, se uma interface entre uma pluralidade de pai repetido, não importa.
  2. O método padrão de interfaces entre vários pais se repete, então a sub-interface deve substituir o método padrão de reescrever, [e] com a palavra chave padrão.
Publicado 218 artigos originais · ganhou elogios 6 · vê 20000 +

Acho que você gosta

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