java-扩展另一个类的类的最终受保护静态类

java-扩展另一个类的类的最终受保护静态类,java,android,oop,Java,Android,Oop,我有一个唱片班。在这个记录类中,我有一个save()方法将数据保存到数据库中。我还有其他几个类扩展了这个Record类,例如Person类。在我的Person类中,我想为People数据库表定义数据库表名和列。我想让所有Person实例都引用这些最终的静态属性。如何让Record扩展类知道此属性将存在于所有扩展类中?如何为基类知道存在的类定义静态属性 这是对接口的适当使用吗 public class Record { protected String table_name; pr

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

这是对接口的适当使用吗

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"}
}

为什么需要
静态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" };
  }
}

为什么需要
静态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" };
  }
}

我认为实现您的需求的一个好方法是这样做: (我假设记录应该是抽象的)


我认为实现您的需求的一个好方法是这样做: (我假设记录应该是抽象的)


为什么希望基类具有此属性,即目标是什么?我希望基类能够将记录保存到正确的数据库表中,并知道需要填充哪些列为什么希望基类具有此属性,ie的目标是什么?我希望基类能够将记录保存到正确的数据库表中,并知道需要哪些列来像这样进行填充-oooooohhhh。直到现在,我才明白抽象类和接口的用法。谢谢像这样-哦哦哦。直到现在,我才明白抽象类和接口的用法。谢谢