java 9 私有接口方法
在 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 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 8 接口引入了一些新功能——默认方法和静态方法。我们可以在java se 8的接口中编写方法实现,仅仅需要使用 default 关键字来定义它们。
在 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 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 不仅像 java 8 一样支持接口默认方法,同时还支持私有方法。
在 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 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
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!