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:
- constante
- método abstrato
Se o Java 8, pode ainda conter:
- O método padrão
- método estático
Se Java 9, pode ainda conter:
- métodos privados
passo interface
- 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 {
// ...
} - 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. - 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
- O método de interface padrão, ele pode interagir classe de objeto, chamado diretamente.
- 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
- A interface não é um bloco estática de código ou método de construção.
- 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
} - Se várias interfaces entre os instrumentos de classe, existem métodos abstratos repetidas, então, apenas substituído uma vez.
- 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.
- 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.
- 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
- Entre as classes é uma única herança. Apenas uma classe controladora direta.
- Entre as classes e interfaces são implementadas múltiplas. Uma classe pode implementar várias interfaces.
- Entre a interface ea interface é herança múltipla.
precauções:
- método resumo, se uma interface entre uma pluralidade de pai repetido, não importa.
- 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.