在java 8之前,接口可以有以下类型的变量/方法.
常量变量
抽象方法
因此我们不能在接口中使用方法实现,更确切地说是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();}
输出
您将看到以下输出.
Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection
在上面的示例中,每个日志方法都有自己的实现.使用Java 8接口可以有以下类型的变量/方法.
常量变量
摘要方法
默认方法
静态方法
让我们有默认实现接口本身使用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 { }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"); }}
输出
您将看到以下输出.
Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection
在上面的例子中,我们再次重复.使用Java 9接口可以有以下类型的变量/方法.
常量变量
摘要方法
默认方法
静态方法
私有方法
私有静态方法
让我们使用私有方法并在Java 9中使用它们.
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"); }}
输出
您将看到以下输出.
Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection