比如创建实例Vec vec = new Vec2D(参数),当我调用vec.vecAdd(参数)时能自动多态调用Vec2D的vecAdd(参数)方法,并且方法返回类型是Vec2D
请教怎么实现?
7 个解决方案
#1
lz还是自己尝试解决,遇到具体问题再问吧
#2
我是初学者,我真的不知道应该怎么去实现,比如我定义接口的时候
public interface Vec{
Object vecAdd(Object o1,Object O2);
Object vecSubtract(Object o1,Object O2);
}
我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
public interface Vec{
Object vecAdd(Object o1,Object O2);
Object vecSubtract(Object o1,Object O2);
}
我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
#3
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的题目意思是不是这个~~关于参数和返回值类型都没有说明的。。。
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的题目意思是不是这个~~关于参数和返回值类型都没有说明的。。。
#4
接口应该是
public interface Vec {
Vec vecAdd(Vec o);
Vec vecSubtract(Vec o);
}
应为你要操作和返回的都是Vec的实现
public interface Vec {
Vec vecAdd(Vec o);
Vec vecSubtract(Vec o);
}
应为你要操作和返回的都是Vec的实现
#5
看你需要的类型了,需要传什么类型的参数给函数,然后返回什么样的类型出结果。
#6
Vec2D的构造器名写错了-_-!
#7
对,谢谢了,3楼的写的很详细,非常感谢,同时也感谢4楼的,去结贴了
#1
lz还是自己尝试解决,遇到具体问题再问吧
#2
我是初学者,我真的不知道应该怎么去实现,比如我定义接口的时候
public interface Vec{
Object vecAdd(Object o1,Object O2);
Object vecSubtract(Object o1,Object O2);
}
我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
public interface Vec{
Object vecAdd(Object o1,Object O2);
Object vecSubtract(Object o1,Object O2);
}
我就不知道vecAdd和vecSubtract的参数类型和返回类型应该用什么,难道要用Object吗?
#3
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的题目意思是不是这个~~关于参数和返回值类型都没有说明的。。。
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的题目意思是不是这个~~关于参数和返回值类型都没有说明的。。。
#4
接口应该是
public interface Vec {
Vec vecAdd(Vec o);
Vec vecSubtract(Vec o);
}
应为你要操作和返回的都是Vec的实现
public interface Vec {
Vec vecAdd(Vec o);
Vec vecSubtract(Vec o);
}
应为你要操作和返回的都是Vec的实现
#5
看你需要的类型了,需要传什么类型的参数给函数,然后返回什么样的类型出结果。
#6
Vec2D的构造器名写错了-_-!
#7
对,谢谢了,3楼的写的很详细,非常感谢,同时也感谢4楼的,去结贴了