Java 仅为符号目的使用子类?

Java 仅为符号目的使用子类?,java,class,Java,Class,我有时看到子类仅用于语义目的,我想知道这样做的利弊,以及它是否应该被视为一种好的实践 例如: 具有语义子类 课程表: -抽象类V3(它是一个具有属性x、y和z的向量,以及一些操作方法) -类长度扩展V3(它只扩展V3,不添加新方法或属性) -类点扩展V3(仅扩展V3) 这样,一些方法,如void setcuboidlength(Lenghts l)将只接受长度类作为参数,而另一些方法,如Point getCuboidCenter()将返回点对象 没有语义子类。 只有一类: -V3级 与使用更具体

我有时看到子类仅用于语义目的,我想知道这样做的利弊,以及它是否应该被视为一种好的实践

例如:

具有语义子类 课程表:

-
抽象类V3
(它是一个具有属性x、y和z的向量,以及一些操作方法)

-
类长度扩展V3
(它只扩展V3,不添加新方法或属性)

-
类点扩展V3
(仅扩展V3)

这样,一些方法,如
void setcuboidlength(Lenghts l)
将只接受长度类作为参数,而另一些方法,如
Point getCuboidCenter()
将返回点对象

没有语义子类。 只有一类:

-
V3级


与使用更具体的类不同,我们使用了通用的V3:
void setCuboidLenghts(V3 v)
V3 getCuboidCenter()

语义类更难误解函数的接口,更难犯错误。 正如Andy Turner所说,我会让V3成为Point and Length类的成员,而不是继承它,除非你有理由不这么做。 语义类的缺点是类的数量太多,需要进行的显式转换可能会很多,但是一些制作良好的语义类可以节省数小时的麻烦

编辑:
Jörg W Mittag linked有一些很好的文档可以用来阅读这种模式。请查看。

听起来作文更合适:
长度
应该有
V3
实例,但不是
V3
实例。昨天问的问题是否回答了你的问题?