小编典典
我认为您的困惑在于C#属性与字段/变量。在C#中,即使在抽象类中,也无法定义抽象字段。但是,您可以定义抽象属性,因为它们是有效的方法(例如,编译为get_TAG()和set_TAG(...))。
正如某些人提醒的那样,即使在C#中,您也不应该在类中包含公共字段/变量。有几个答案暗示了我的建议,但并不清楚。您应该使用getTAG()将您的想法转换为JavaBean属性的Java。然后,您的子类将必须实现这一点(我还编写了一个具有表类的项目来执行此操作)。
因此,您可以像这样定义一个抽象类…
public abstract class AbstractTable {
public abstract String getTag();
public abstract void init();
...
}
然后,在任何具体的子类中,您都需要定义一个静态最终变量(常量),并从中返回它getTag(),如下所示:
public class SalesTable extends AbstractTable {
private static final String TABLE_NAME = "Sales";
public String getTag() {
return TABLE_NAME;
}
public void init() {
...
String tableName = getTag();
...
}
}
编辑 :
您不能覆盖继承的字段(在C#或Java中)。您也不能覆盖静态成员,无论它们是字段还是方法。因此,这也是最佳解决方案。我更改了上面的init方法示例,以显示该方法的用法-
再次将getXXX方法视为属性。
2020-10-20