java 定义接口school_Java 9 私有接口方法

Java 9 私有接口方法

在 Java 8之前,接口可以有常量变量和抽象方法。

我们不能在接口中提供方法实现。如果我们要提供抽象方法和非抽象方法(方法与实现)的组合,那么我们就得使用抽象类。

实例

publicclassTester{publicstaticvoidmain(String[]args){LogOraclelog=newLogOracle();log.logInfo("");log.logWarn("");log.logError("");log.logFatal("");LogMySqllog1=newLogMySql();log1.logInfo("");log1.logWarn("");log1.logError("");log1.logFatal("");}}finalclassLogOracleimplementsLogging{@OverridepublicvoidlogInfo(Stringmessage){getConnection();System.out.println("Log Message :"+"INFO");closeConnection();}@OverridepublicvoidlogWarn(Stringmessage){getConnection();System.out.println("Log Message :"+"WARN");closeConnection();}@OverridepublicvoidlogError(Stringmessage){getConnection();System.out.println("Log Message :"+"ERROR");closeConnection();}@OverridepublicvoidlogFatal(Stringmessage){getConnection();System.out.println("Log Message :"+"FATAL");closeConnection();}@OverridepublicvoidgetConnection(){System.out.println("Open Database connection");}@OverridepublicvoidcloseConnection(){System.out.println("Close Database connection");}}finalclassLogMySqlimplementsLogging{@OverridepublicvoidlogInfo(Stringmessage){getConnection();System.out.println("Log Message :"+"INFO");closeConnection();}@OverridepublicvoidlogWarn(Stringmessage){getConnection();System.out.println("Log Message :"+"WARN");closeConnection();}@OverridepublicvoidlogError(Stringmessage){getConnection();System.out.println("Log Message :"+"ERROR");closeConnection();}@OverridepublicvoidlogFatal(Stringmessage){getConnection();System.out.println("Log Message :"+"FATAL");closeConnection();}@OverridepublicvoidgetConnection(){System.out.println("Open Database connection");}@OverridepublicvoidcloseConnection(){System.out.println("Close Database connection");}}interfaceLogging{StringORACLE="Oracle_Database";StringMYSQL="MySql_Database";voidlogInfo(Stringmessage);voidlogWarn(Stringmessage);voidlogError(Stringmessage);voidlogFatal(Stringmessage);voidgetConnection();voidcloseConnection();}

以上实例执行输出结果为:

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 中,一个接口中能定义如下几种变量/方法:

常量

抽象方法

默认方法

静态方法

实例

publicclassTester{publicstaticvoidmain(String[]args){LogOraclelog=newLogOracle();log.logInfo("");log.logWarn("");log.logError("");log.logFatal("");LogMySqllog1=newLogMySql();log1.logInfo("");log1.logWarn("");log1.logError("");log1.logFatal("");}}finalclassLogOracleimplementsLogging{}finalclassLogMySqlimplementsLogging{}interfaceLogging{StringORACLE="Oracle_Database";StringMYSQL="MySql_Database";defaultvoidlogInfo(Stringmessage){getConnection();System.out.println("Log Message :"+"INFO");closeConnection();}defaultvoidlogWarn(Stringmessage){getConnection();System.out.println("Log Message :"+"WARN");closeConnection();}defaultvoidlogError(Stringmessage){getConnection();System.out.println("Log Message :"+"ERROR");closeConnection();}defaultvoidlogFatal(Stringmessage){getConnection();System.out.println("Log Message :"+"FATAL");closeConnection();}staticvoidgetConnection(){System.out.println("Open Database connection");}staticvoidcloseConnection(){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 中,一个接口中能定义如下几种变量/方法:

常量

抽象方法

默认方法

静态方法

私有方法

私有静态方法

以下实例提取了冗余到通用方法,看起来明显更简洁:

实例

publicclassTester{publicstaticvoidmain(String[]args){LogOraclelog=newLogOracle();log.logInfo("");log.logWarn("");log.logError("");log.logFatal("");LogMySqllog1=newLogMySql();log1.logInfo("");log1.logWarn("");log1.logError("");log1.logFatal("");}}finalclassLogOracleimplementsLogging{}finalclassLogMySqlimplementsLogging{}interfaceLogging{StringORACLE="Oracle_Database";StringMYSQL="MySql_Database";privatevoidlog(Stringmessage,Stringprefix){getConnection();System.out.println("Log Message :"+prefix);closeConnection();}defaultvoidlogInfo(Stringmessage){log(message,"INFO");}defaultvoidlogWarn(Stringmessage){log(message,"WARN");}defaultvoidlogError(Stringmessage){log(message,"ERROR");}defaultvoidlogFatal(Stringmessage){log(message,"FATAL");}privatestaticvoidgetConnection(){System.out.println("Open Database connection");}privatestaticvoidcloseConnection(){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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值