当前位置:首页 > JAVA教程 > JAVA基础

Java 9 私有接口方法

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)!