English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En Java 8Avant, l'interface pouvait avoir des variables constantes et des méthodes abstraites.
Nous ne pouvons pas fournir une implémentation de méthode dans l'interface. Si nous devons fournir une combinaison de méthodes abstraites et non abstraites (méthodes et implémentations), alors nous devons utiliser une classe abstraite.
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
Dans l'exemple ci-dessus, chaque méthode de journal a sa propre implémentation.
En Java 8 L'interface introduit de nouvelles fonctionnalités - les méthodes par défaut et les méthodes statiques. Nous pouvons utiliser Java SE 8La méthode d'implémentation est écrite dans l'interface, il suffit d'utiliser la clé mot-clé default pour les définir.
En Java 8 Dans un interface, il est possible de définir plusieurs types de variables tels que :/Méthode :
Constante
Méthode abstraite
Méthode par défaut
Méthode statique
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 Non seulement comme Java 8 comme Java, il est également supporté les méthodes par défaut des interfaces et les méthodes privées.
En Java 9 Dans un interface, il est possible de définir plusieurs types de variables tels que :/Méthode :
Constante
Méthode abstraite
Méthode par défaut
Méthode statique
Méthode privée
Méthode statique privée
Le suivant exemple extrait les redondances vers des méthodes générales, ce qui rend le code apparemment plus concis :
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