Como surgió
Se establecen disposiciones adicionales sobre la base de clases abstractas.
Sabemos que una clase abstracta puede tener métodos ordinarios y métodos abstractos, por lo que si una clase abstracta solo tiene métodos abstractos y constantes, se puede definir como una interfaz.
La interfaz es una clase abstracta especial.
Definir la interfaz
interface 接口名 {
常量;
抽象方法;
}
Las definiciones predeterminadas en la interfaz son constantes, es decir
public static final int x = 5;
同
int x = 5;
Los métodos definidos por defecto en la interfaz son métodos abstractos,
public abstract a ();
同
a ();
No hay ningún constructor en la interfaz y no se puede crear una instancia del método.
Implementar la interfaz
La clase que implementa la interfaz se llama clase de implementación, la clase de implementación debe implementar todos los métodos en la interfaz y todo debe estar decorado con public
class 类名 implements 接口名 {
}
característica
- Una clase puede implementar múltiples interfaces, separadas por comas.
- Por encima de jdk8: agregue el valor predeterminado al método en la interfaz modificada, que puede tener un cuerpo de método, y la clase de implementación no aplica este método.
interface 接口名 {
public default f () {
}
}
¿La razón de esto?
Por ejemplo, existen muchos métodos para definir una interfaz, si nuestra clase de implementación solo quiere implementar uno de los métodos, entonces tenemos que escribir otros métodos que no se utilizan, lo cual no es muy amigable. Así que agregó esto,
heredar
Una interfaz puede heredar otra interfaz, que es similar a la forma de herencia entre clases.
// 文件名: Sports.java
public interface Sports
{
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
// 文件名: Football.java
public interface Football extends Sports
{
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}
Herencia múltiple:
en Java, la herencia múltiple de una clase es ilegal, pero las interfaces permiten la herencia múltiple.
public interface Hockey extends Sports, Event
efecto
- Realización indirecta de herencia múltiple (la clase java no admite herencia múltiple)
- Definir normas y estándares a través de interfaces.
- Formulación e implementación de estándares independientes
Sugerir programación orientada a la interfaz para mejorar la escalabilidad
Comparación de interfaz y clase abstracta
Mismo punto:
- No se puede crear una instancia
- Puede contener métodos abstractos
diferencia:
- Solo hay constantes estáticas en la interfaz y variables miembro ordinarias en la clase abstracta.
- Solo el método de interfaz abstracta, puede haber métodos no abstractos (utilizando una clase abstracta
default
modificada) - La interfaz no contiene un constructor, pero una clase abstracta puede tener un constructor
- La herencia múltiple es compatible con la interfaz, la clase abstracta no admite la herencia múltiple