- The following transaction has just finished:
- 1502179140689,1501,This is a test transaction !!
别的修改TransactionManagerFS如下:
Abstract关键字平日被用于类和办法,用来把某些行动的实现宛转给子类。因为Java不支撑抽象属性,如不雅你试图将类属性标记为抽象,将会获得一个编译时缺点。
在本教程中,我们将介绍两种定义抽象属性的办法,这些抽象属性可以由子类进行设置,并且不应用Abstract 关键字。
实用案例
假设我们想要实现一个记录事务的日记模块,用来记录特定事务的信息。我们欲望这个模块是抽象的,如许我们可以实现不合的日记记录方法,例如:记录到文件或数据库中。
我们的引擎应用预定义的分隔符来连接日记中的信息,并存储在一个String中。具体应当应用哪个分隔符,这将取决于日记记录的规矩,例如可以用字符“,”对日记记录中不合部分的信息进行瓜分。
下面我供给两种方法,来实现把分隔符的定义宛转给子类。
在抽象类中定义带参数的构造函数
在抽象类中定义动态属性的第一种办法是:定义一个参数的构造函数。
所以我们可以如许实现这个引擎:
- // TransactionManager.java
- public abstract class TransactionManager {
- private String separator;
- public TransactionManager(String separator) {
- this.separator = separator;
- }
- public abstract void writeTransaction(String result);
- public Transaction startTransaction()
- {
- Transaction transaction = new Transaction(System.currentTimeMillis());
- return transaction;
- }
- public void endTransaction(Transaction t) {
- long processingTime = System.currentTimeMillis() - t.getStartTime();
- StringBuilder logBuilder = new StringBuilder();
- logBuilder.append(t.getStartTime());
- // Notice the use of this.separator
- logBuilder.append(this.separator);
- logBuilder.append(processingTime);
- logBuilder.append(this.separator);
- logBuilder.append(t.getData());
- String result = logBuilder.toString();
推荐阅读
【51CTO晃荡】8.26 带你深度懂得清华大年夜学、搜狗基于算法的IT运维实践与摸索 创建HTTP请求使现代编程说话的核心功能之一,也是很多法度榜样员在接触到新的开辟情况时最>>>详细阅读
本文标题:怎样在java中定义一个抽象属性
地址:http://www.17bianji.com/lsqh/36784.html
1/2 1