创建一个成为Vec的接口,这个接口定义了将两个向量相加的方法vecAdd(参数)和相减的方法vecSubtract(参数),创建两个类Vec2D和Vec3D,分别为二维向量和三维向量实现这个接口。类Vec2D必须定义实例变量x和y。类Vec3D必须定义实例变量x、y和z。要求当调用接口方法时能正确的多态调用相应的类方法,而且希望接口的两个方法也能返回相应的类类型。
    比如创建实例Vec vec = new Vec2D(参数),当我调用vec.vecAdd(参数)时能自动多态调用Vec2D的vecAdd(参数)方法,并且方法返回类型是Vec2D
    请教怎么实现?
    

解决方案 »

  1.   

    我是初学者,我真的不知道应该怎么去实现,比如我定义接口的时候
    public interface Vec{
        Object vecAdd(Object o1,Object O2);
        Object vecSubtract(Object o1,Object O2);
    }我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
      

  2.   

    interface Vec{
       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的题目意思是不是这个~~关于参数和返回值类型都没有说明的
      

  3.   

    接口应该是public interface Vec {
    Vec vecAdd(Vec o);
    Vec vecSubtract(Vec o);
    }应为你要操作和返回的都是Vec的实现