创建一个成为Vec的接口,这个接口定义了将两个向量相加的方法vecAdd(参数)和相减的方法vecSubtract(参数),创建两个类Vec2D和Vec3D,分别为二维向量和三维向量实现这个接口。类Vec2D必须定义实例变量x和y。类Vec3D必须定义实例变量x、y和z。要求当调用接口方法时能正确的多态调用相应的类方法,而且希望接口的两个方法也能返回相应的类类型。
比如创建实例Vec vec = new Vec2D(参数),当我调用vec.vecAdd(参数)时能自动多态调用Vec2D的vecAdd(参数)方法,并且方法返回类型是Vec2D
请教怎么实现?
比如创建实例Vec vec = new Vec2D(参数),当我调用vec.vecAdd(参数)时能自动多态调用Vec2D的vecAdd(参数)方法,并且方法返回类型是Vec2D
请教怎么实现?
public interface Vec{
Object vecAdd(Object o1,Object O2);
Object vecSubtract(Object o1,Object O2);
}我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
Vec vecAdd(Vec vec);
Vec vecSubstract(Vec vec);
}
class Vec2D implements Vec{
int x,y;
Vec(){}
Vec(int x,int y){
this.x = x;
this.y = y;
}
Vec vecAdd(Vec vec){
// 保证传进来的是Vec2D的实例
Vec2D v = (Vec2D)vec;
return new Vec2D(this.x+v.x,this.y+v.y);
}
Vec vecSubstract(参数){
Vec2D v = (Vec2D)vec;
return new Vec2D(this.x-v.x,this.y-v.y);
}
}class Vec3D implements Vec{
int x,y,z;
// 类似Vec2D 的定义
}class Test{
public static void main(String[] args){
Vec v = new Vec2D(1,2);
Vec v_ = new Vec2D(3,4);
v = v.vecAdd(v_); // 调用的即是Vec2D的vecAdd()方法
}
}~~LZ的题目意思是不是这个~~关于参数和返回值类型都没有说明的
Vec vecAdd(Vec o);
Vec vecSubtract(Vec o);
}应为你要操作和返回的都是Vec的实现