Java 从超类继承字段还是在子类中写入字段?

Java 从超类继承字段还是在子类中写入字段?,java,inheritance,optimization,Java,Inheritance,Optimization,因此,我有以下继承结构: 超级类A有一系列子类B、C、Z 我需要将两个字段及其相应的getter/setter添加到一些子类中,比如B,C….Q,所以大约有一半的子类 我的困境是,如果我将字段添加到每个子类中,这将非常无聊和乏味。由于重复的代码,它看起来很臭 但是如果我把这些字段添加到超级类A中,它将生成来自R…Z的其他子类,这些子类不需要有这两个字段的字段。我认为这是多余的 那么哪种选择更好呢 根据坚实的原则,更具体地说,界面分离原则: “许多特定于客户端的接口比一个通用接口要好。” 因此,基

因此,我有以下继承结构: 超级类A有一系列子类B、C、Z

我需要将两个字段及其相应的getter/setter添加到一些子类中,比如B,C….Q,所以大约有一半的子类

我的困境是,如果我将字段添加到每个子类中,这将非常无聊和乏味。由于重复的代码,它看起来很臭

但是如果我把这些字段添加到超级类A中,它将生成来自R…Z的其他子类,这些子类不需要有这两个字段的字段。我认为这是多余的


那么哪种选择更好呢

根据坚实的原则,更具体地说,界面分离原则

“许多特定于客户端的接口比一个通用接口要好。”

因此,基本上创建多个接口来表示域模型的某些方面,并让类选择要实现的接口。这样,您就不会强制所有类实现它们不需要的方法

例子
根据坚实的原则,更具体地说,界面分离原则

“许多特定于客户端的接口比一个通用接口要好。”

因此,基本上创建多个接口来表示域模型的某些方面,并让类选择要实现的接口。这样,您就不会强制所有类实现它们不需要的方法

例子
根据坚实的原则,更具体地说,界面分离原则

“许多特定于客户端的接口比一个通用接口要好。”

因此,基本上创建多个接口来表示域模型的某些方面,并让类选择要实现的接口。这样,您就不会强制所有类实现它们不需要的方法

例子
根据坚实的原则,更具体地说,界面分离原则

“许多特定于客户端的接口比一个通用接口要好。”

因此,基本上创建多个接口来表示域模型的某些方面,并让类选择要实现的接口。这样,您就不会强制所有类实现它们不需要的方法

例子
创建一个中间类,
Foo
,它扩展了
A
,包括新字段,以及setter和getter。让你的
B,C….Q
类扩展
Foo
而不是
A

A -> Foo -> B A -> Foo -> C ... A -> R A -> S ... A->Foo->B A->Foo->C ... A->R A->S ... 其中
X->Y
表示
X
Y


其他答案提到了接口。我假设您已经将您的行为分组到有意义的界面中。这个答案解决了具体类之间的关系。

创建一个中间类,
Foo
,它扩展了
A
,包括新字段,以及setter和getter。让你的
B,C….Q
类扩展
Foo
而不是
A

A -> Foo -> B A -> Foo -> C ... A -> R A -> S ... A->Foo->B A->Foo->C ... A->R A->S ... 其中
X->Y
表示
X
Y


其他答案提到了接口。我假设您已经将您的行为分组到有意义的界面中。这个答案解决了具体类之间的关系。

创建一个中间类,
Foo
,它扩展了
A
,包括新字段,以及setter和getter。让你的
B,C….Q
类扩展
Foo
而不是
A

A -> Foo -> B A -> Foo -> C ... A -> R A -> S ... A->Foo->B A->Foo->C ... A->R A->S ... 其中
X->Y
表示
X
Y


其他答案提到了接口。我假设您已经将您的行为分组到有意义的界面中。这个答案解决了具体类之间的关系。

创建一个中间类,
Foo
,它扩展了
A
,包括新字段,以及setter和getter。让你的
B,C….Q
类扩展
Foo
而不是
A

A -> Foo -> B A -> Foo -> C ... A -> R A -> S ... A->Foo->B A->Foo->C ... A->R A->S ... 其中
X->Y
表示
X
Y


其他答案提到了接口。我假设您已经将您的行为分组到有意义的界面中。这个答案解决了具体类之间的关系。

为什么不创建子类X,并让需要这些变量的其他子类扩展,以便您需要一个接口或来自您父母的中间子类为什么不创建子类X,让其他需要这些变量的子类扩展,你需要一个接口或一个来自你父母的中间子类为什么不创建子类X,让其他需要这些变量的子类扩展,你需要一个来自你父母的接口或一个中间子类为什么不创建子类X,并让其他需要这些变量的子类扩展为需要父类的接口或中间子类