java - 用于扩展另一个类的类的最终 protected 静态类

标签 java android oop

我有一个记录类(class)。在这个 Record 类中,我有一个 save() 方法,它将数据保存到数据库中。我还有其他几个类扩展了这个 Record 类,例如 Person 类。在我的 Person 类中,我想定义 People 数据库表的数据库表名称和列。我想让 Person 的所有实例都引用这些最终静态属性。如何让扩展类 Record 知道该属性将存在于所有扩展类中?如何为基类知道存在的类定义静态属性?

这是接口(interface)的适当使用吗?

public class Record {
    protected String table_name;
    protected String[] table_columns;

    private void save(){
        //save data based on table_name and table_columns;
    }
}

public class Person extends Record{
    protected final static String table_name = "People";
    protected final static String[] table_columns = {"_id","name"}
}

最佳答案

为什么需要static final

如果将Record抽象化,并将表名和表列更改为抽象方法,则需要在子类中实现它们(并且将确保Record他们的存在)。

我不确定为什么 Person 的实例需要访问此信息,但如果有必要的话,这仍然是可能的。

public abstract class Record {
  protected abstract String getTableName();
  protected abstract String[] getTableColumns();

  private void save(){
    //save data based on getTableName() and getTableColumns();
  }
}

public class Person extends Record {
  protected String getTableName() {
    return "People";
  }
  protected String[] getTableColumns() {
    return new String[] { "_id", "name" };
  }
}

关于java - 用于扩展另一个类的类的最终 protected 静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049888/

相关文章:

java - android - RecyclerView 中的单个 RadioButton

c++ - 我可以从我的父类(super class)中调用子类构造函数吗?

Java继承设计思想 - 求指教

c++ - 使用 C++ 和 OOP 创建面积计算程序

java - java语言中的模式

java - 在 Firebase 中获取查询

java - 自定义调用 TestSuite 的多个 TestExecutionListeners 方法的最佳方法是什么?

java - Android ActionBar 发出不同的 API <> 21

java - 启动 Activity : Which is better method and Why?

安卓 Activity 透明度