继承具有不同原始数据成员但方法相同的Java子类
我在写一个光线跟踪器,我有一个Vec3类,这是一个典型的数学向量,有3个坐标:X、Y和Z。我还创建了一个包含3个分量的颜色类:R、G和B。在编写了大量代码后,我开始注意到颜色基本上是一个Vec3。我开始为颜色写很多和我为Vec3写的相同的方法。看到干代码是一种方法,我想合并这两个类,这样我就不必继续为两个类编写相同的代码
目前,课程如下:
class Vec3{
public static final int X=0,Y=1,Z=2;
double components[];
...
// Constructors and Methods
}
class Color extends Vec3{
public static final int R=0,G=1,B=2;
int components[];
...
// Constructors and Methods
}
这两个类之间的唯一区别是,Vec3的组件使用双精度,而颜色使用整数。除了数据类型之外,所有方法都完全相同。我最初的倾向是尝试创建一个泛型类型T的BaseVec3类,然后在子类中声明该类型。但是,当然,泛型需要类,而不是基元
我有没有办法拥有一个单一的方法代码库,但使用不同的原始数据类型
编辑:我可能应该注意到,我已经用Python和C编程一段时间了,而且已经有一段时间没有接触Java了。所以,我对这个问题的第一反应是否定的
# 1 楼答案
编辑-我在最后看到了你对泛型的评论。这不是自动装箱的目的吗
你就不能用这样的通用词吗
# 2 楼答案
每个基元都有其相应的类。例如,
Integer
表示int
。Java可以自动装箱,即自动转换然而,我不认为在这种情况下使用继承是合适的。如果
Vec3
实现发生变化怎么办?如果你决定让你的会员成为私人会员(你应该这样做),该怎么办# 3 楼答案
我不是100%确定你在问什么,但如果你的代码是你所展示的,你没有你想要的吗?在代码中,
Color extends Vec3
。 由于该语句,可以将Color
对象视为Vec3
对象;Vec3中的所有方法都是按颜色继承的,采用Vec3类型的arg的方法将接受Color类型的arg