Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于子类定义超类实例字段的最佳实践_Java_Superclass - Fatal编程技术网

Java 基于子类定义超类实例字段的最佳实践

Java 基于子类定义超类实例字段的最佳实践,java,superclass,Java,Superclass,我有一个抽象的超类和几个继承超类中定义的字段的子类,但是每个子类对这些字段都有不同的值。调用子类时,我使用构造函数适当地设置字段 我应该使用直接引用来执行此操作吗field=value,还是应该使用超类集合方法setField(value) 我宁愿将字段保密,因此我希望避免直接引用 另一种选择是调用超级构造函数,这将允许我在超级类构造函数super(T value)和超级类SuperClass(T value){field=value}中使用直接引用。这是最好的方式吗?我甚至可以在超级构造函数中

我有一个抽象的超类和几个继承超类中定义的字段的子类,但是每个子类对这些字段都有不同的值。调用子类时,我使用构造函数适当地设置字段

我应该使用直接引用来执行此操作吗
field=value
,还是应该使用超类集合方法
setField(value)

我宁愿将字段保密,因此我希望避免直接引用


另一种选择是调用超级构造函数,这将允许我在超级类构造函数
super(T value)
和超级类
SuperClass(T value){field=value}
中使用直接引用。这是最好的方式吗?我甚至可以在超级构造函数中使用set方法,但这似乎是多余的。

一般来说,应该将它们设置为私有,并使用getter和setter访问它们。如果允许子类直接设置它们,它们可能会通过设置无效值违反超类的约定


如果子类只在那些超类字段的值上有所不同,那么就不应该使用子类;只需创建具有不同值的超类实例。

通常,您应该将它们设置为私有,并使用getter和setter访问它们。如果允许子类直接设置它们,它们可能会通过设置无效值违反超类的约定


如果子类只在那些超类字段的值上有所不同,那么就不应该使用子类;只需创建具有不同值的超类实例。

通常,您应该将它们设置为私有,并使用getter和setter访问它们。如果允许子类直接设置它们,它们可能会通过设置无效值违反超类的约定


如果子类只在那些超类字段的值上有所不同,那么就不应该使用子类;只需创建具有不同值的超类实例。

通常,您应该将它们设置为私有,并使用getter和setter访问它们。如果允许子类直接设置它们,它们可能会通过设置无效值违反超类的约定


如果子类只在那些超类字段的值上有所不同,那么就不应该使用子类;只需创建具有不同值的超类实例。

使用抽象超类的一个巨大优势和一个重要原因是节省编码时间,并使您的类体系结构更加简单。 因此,如果您有一个具有子类的公共字段的超类,那么您应该再看看您的体系结构

要解决您的问题,请删除子类中已存在但超类中已存在的任何冗余字段。无论何时,只要使用fiels,就可以使用超类引用。例如,调用超类构造函数来设置字段等的值


每当您想要检索字段时,请调用“super.getValue(…)”等使用抽象超类的一大优点和一个重要原因是节省编码时间,并使您的类体系结构变得更加简单。 因此,如果您有一个具有子类的公共字段的超类,那么您应该再看看您的体系结构

要解决您的问题,请删除子类中已存在但超类中已存在的任何冗余字段。无论何时,只要使用fiels,就可以使用超类引用。例如,调用超类构造函数来设置字段等的值


每当您想要检索字段时,请调用“super.getValue(…)”等使用抽象超类的一大优点和一个重要原因是节省编码时间,并使您的类体系结构变得更加简单。 因此,如果您有一个具有子类的公共字段的超类,那么您应该再看看您的体系结构

要解决您的问题,请删除子类中已存在但超类中已存在的任何冗余字段。无论何时,只要使用fiels,就可以使用超类引用。例如,调用超类构造函数来设置字段等的值


每当您想要检索字段时,请调用“super.getValue(…)”等使用抽象超类的一大优点和一个重要原因是节省编码时间,并使您的类体系结构变得更加简单。 因此,如果您有一个具有子类的公共字段的超类,那么您应该再看看您的体系结构

要解决您的问题,请删除子类中已存在但超类中已存在的任何冗余字段。无论何时,只要使用fiels,就可以使用超类引用。例如,调用超类构造函数来设置字段等的值


每当您想要检索字段时,调用“super.getValue(…)”等

您可能应该重新评估您的类层次结构,看看是否有必要。继承给您带来的问题可能比它解决的问题还多。子类不应该有很多相同的字段,这些字段的值与超类不同。如果您不能在超级抽象类中使用任何字段值,那么首先为什么要在那里定义它们?因为它们对于所有子类都是通用的。为什么要多次申报?我不是在子类中声明它们。为什么不在抽象超类中定义字段,而不实际将它们设置为任何特定的值呢?您应该能够以这样的方式设置抽象超类:如果子类没有为任何字段设置值,就会抛出异常。这就是我正在做的。我从来没有说过我正在初始化字段,除了