English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Java 8之前,接口可以有常量变量和抽象方法。
我们无法在接口中提供方法实现。如果我们想提供抽象方法和非抽象方法(方法与实现)的组合,那么我们就需要使用抽象类。
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { @Override public void logInfo(String message) { getConnection(); System.out.println("Log Message : "); + "INFO"); closeConnection(); } @Override public void logWarn(String message) { getConnection(); System.out.println("Log Message : "); + "WARN"); closeConnection(); } @Override public void logError(String message) { getConnection(); System.out.println("Log Message : "); + "ERROR"); closeConnection(); } @Override public void logFatal(String message) { getConnection(); System.out.println("Log Message : "); + "FATAL"); closeConnection(); } @Override public void getConnection() { System.out.println("Open Database connection"); } @Override public void closeConnection() { System.out.println("Close Database connection"); } } final class LogMySql implements Logging { @Override public void logInfo(String message) { getConnection(); System.out.println("Log Message : "); + "INFO"); closeConnection(); } @Override public void logWarn(String message) { getConnection(); System.out.println("Log Message : "); + "WARN"); closeConnection(); } @Override public void logError(String message) { getConnection(); System.out.println("Log Message : "); + "ERROR"); closeConnection(); } @Override public void logFatal(String message) { getConnection(); System.out.println("Log Message : "); + "FATAL"); closeConnection(); } @Override public void getConnection() { System.out.println("Open Database connection"); } @Override public void closeConnection() { System.out.println("Close Database connection"); } } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; void logInfo(String message); void logWarn(String message); void logError(String message); void logFatal(String message); void getConnection(); void closeConnection(); }
The execution output of the above example is as follows:
Open Database connection Log Message: INFO Close Database connection Open Database connection Log Message: WARN Close Database connection Open Database connection Log Message: ERROR Close Database connection Open Database connection Log Message: FATAL Close Database connection
在上面的示例中,每个日志方法都有自己的实现。
In Java 8 接口引入了一些新功能——默认方法和静态方法。我们可以在Java SE中。 8在接口中编写方法实现,只需使用 default 关键字来定义它们。
In Java 8 In einem Interface können verschiedene Variablen definiert werden:/Methode:
Konstante
Abstrakte Methode
Standardmethode
Statische Methode
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { } final class LogMySql implements Logging { } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; default void logInfo(String message) { getConnection(); System.out.println("Log Message : "); + "INFO"); closeConnection(); } default void logWarn(String message) { getConnection(); System.out.println("Log Message : "); + "WARN"); closeConnection(); } default void logError(String message) { getConnection(); System.out.println("Log Message : "); + "ERROR"); closeConnection(); } default void logFatal(String message) { getConnection(); System.out.println("Log Message : "); + "FATAL"); closeConnection(); } static void getConnection() { System.out.println("Open Database connection"); } static void closeConnection() { System.out.println("Close Database connection"); } }
The execution output of the above example is as follows:
Open Database connection Log Message: INFO Close Database connection Open Database connection Log Message: WARN Close Database connection Open Database connection Log Message: ERROR Close Database connection Open Database connection Log Message: FATAL Close Database connection
Java 9 Bietet Java 8 unterstützt wie Java auch Standard-Interface-Methode, unterstützt jedoch auch private Methoden.
In Java 9 In einem Interface können verschiedene Variablen definiert werden:/Methode:
Konstante
Abstrakte Methode
Standardmethode
Statische Methode
Private Methode
Private statische Methode
Der folgende Beispiel extrahiert Redundanz in allgemeine Methoden und scheint erheblich kürzer zu sein:
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { } final class LogMySql implements Logging { } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; private void log(String message, String prefix) { getConnection(); System.out.println("Log Message : "); + prefix); closeConnection(); } default void logInfo(String message) { log(message, "INFO"); } default void logWarn(String message) { log(message, "WARN"); } default void logError(String message) { log(message, "ERROR"); } default void logFatal(String message) { log(message, "FATAL"); } private static void getConnection() { System.out.println("Open Database connection"); } private static void closeConnection() { System.out.println("Close Database connection"); } }
The execution output of the above example is as follows:
Open Database connection Log Message: INFO Close Database connection Open Database connection Log Message: WARN Close Database connection Open Database connection Log Message: ERROR Close Database connection Open Database connection Log Message: FATAL Close Database connection