java接口 作为函数参数传递。。。。怎么传递值?
publicinterfaceNVectorADT{publicNVectorADTplus(NVectorADTy);publicNVectorADTminus(NVe...
public interface NVectorADT
{
public NVectorADT plus ( NVectorADT y ) ;
public NVectorADT minus ( NVectorADT y ) ;
public NVectorADT mult ( NVectorADT y ) ;
public NVectorADT divby ( NVectorADT y ) ;
public double sum( ) ;
public NVectorADT s q r t ( ) ;
public int s i z e ( ) ;
public double [ ] getAsArray ( ) ;
public boolean equa l s ( NVectorADT y ) ;
}
这是接口
public class DVector implements NVectorADT {
....DVector是实现接口的类
。。。。。。
public class DVectorTest extends TestCase
DVectorTest是测试类
下面是测试类中的加法的那个函数,接口和测试类是老师给的
要编写DVector类
我不明白 的是
public void testPlus()
{
int n = 100;
double[] arr = new double[n];
double[] arr2 = new double[n];
double[] arr3 = new double[n];
for( int i = 0; i < n; ++i )
{
arr[i] = i;
arr2[i] = i*3;
arr3[i] = arr[i] + arr2[i];
}
DVector dv = new DVector(arr);
DVector dv2 = new DVector(arr2);
DVector dv3 = new DVector(arr3);
NVectorADT dv4 = dv.plus(dv2);////////////////////这块,参数dv2在接口中是接口类型的在这怎么是DVector类型的,如果是接口类型的怎么传递参数arr2...................................................................................................如果写成DVector dv2;
有dv2.arr......
如果写成NVectorADT dv2;
就没有dv2.arr。。。。。
接口中那样写,,,那在DVector中怎么实现
谢谢
assertTrue(dv3.equals(dv4));
}
没有数组就没有成员,实现不了相加。。
但是我感觉我的那个程序比较麻烦,实现接口的类要多一个私有的成员 数组,但是接口里没有
在接口函数参数是接口类型的,到实现他的类中的函数参数,如果也是接口类型的就不会有它的私有的成员,也就是一个数组。。。。。? 展开
{
public NVectorADT plus ( NVectorADT y ) ;
public NVectorADT minus ( NVectorADT y ) ;
public NVectorADT mult ( NVectorADT y ) ;
public NVectorADT divby ( NVectorADT y ) ;
public double sum( ) ;
public NVectorADT s q r t ( ) ;
public int s i z e ( ) ;
public double [ ] getAsArray ( ) ;
public boolean equa l s ( NVectorADT y ) ;
}
这是接口
public class DVector implements NVectorADT {
....DVector是实现接口的类
。。。。。。
public class DVectorTest extends TestCase
DVectorTest是测试类
下面是测试类中的加法的那个函数,接口和测试类是老师给的
要编写DVector类
我不明白 的是
public void testPlus()
{
int n = 100;
double[] arr = new double[n];
double[] arr2 = new double[n];
double[] arr3 = new double[n];
for( int i = 0; i < n; ++i )
{
arr[i] = i;
arr2[i] = i*3;
arr3[i] = arr[i] + arr2[i];
}
DVector dv = new DVector(arr);
DVector dv2 = new DVector(arr2);
DVector dv3 = new DVector(arr3);
NVectorADT dv4 = dv.plus(dv2);////////////////////这块,参数dv2在接口中是接口类型的在这怎么是DVector类型的,如果是接口类型的怎么传递参数arr2...................................................................................................如果写成DVector dv2;
有dv2.arr......
如果写成NVectorADT dv2;
就没有dv2.arr。。。。。
接口中那样写,,,那在DVector中怎么实现
谢谢
assertTrue(dv3.equals(dv4));
}
没有数组就没有成员,实现不了相加。。
但是我感觉我的那个程序比较麻烦,实现接口的类要多一个私有的成员 数组,但是接口里没有
在接口函数参数是接口类型的,到实现他的类中的函数参数,如果也是接口类型的就不会有它的私有的成员,也就是一个数组。。。。。? 展开
3个回答
展开全部
你后面的表述确实有点不清晰,你问了NVectorADT dv4 = dv.plus(dv2)这个东西,参数dv2是一个DVector类型的,而接口中定义的dv2应该是NVectorADT的,因为DVector实现了NVectorADT这个接口,其实我们可以有一个很不准确的理解:DVector是NVectorADT的子类,所以DVector类型的也就是NVectorADT类型,就好像我们说DVector类型也是Object类型一样。但是这个说法不准确,但是可以这样理解。
下来就是你问参数的传递问题,你问参数在接口里面是怎么传递的,我觉得你理解错,接口就相当于一个规范,里面不存在什么传递值之说,值的传递是在实现类里面。
也就是你只要实现接口过后,就可以暂时不用去管它了,你只需要看你的实现类厘米的方法就行了。
要是对你有帮助,不要忘了采纳哟,呵呵
下来就是你问参数的传递问题,你问参数在接口里面是怎么传递的,我觉得你理解错,接口就相当于一个规范,里面不存在什么传递值之说,值的传递是在实现类里面。
也就是你只要实现接口过后,就可以暂时不用去管它了,你只需要看你的实现类厘米的方法就行了。
要是对你有帮助,不要忘了采纳哟,呵呵
展开全部
你好,很高兴为你解答。
这种用法是Java的接口回调。
接口回调是多态的另一种体现。接口回调是指:
可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。
class Student implements People {
publicvoid peopleList() {
System.out.println("I’m a student.");
}
}
class Teacher implements People {
publicvoid peopleList() {
System.out.println("I’m a teacher.");
}
}
publicstaticvoid main(String args[]) {
a = new Student(); // 实例化,接口变量中存放对象的引用
a.peopleList(); // 接口回调
a = new Teacher(); // 实例化,接口变量中存放对象的引用
a.peopleList(); // 接口回调
}
}
这种用法是Java的接口回调。
接口回调是多态的另一种体现。接口回调是指:
可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。
class Student implements People {
publicvoid peopleList() {
System.out.println("I’m a student.");
}
}
class Teacher implements People {
publicvoid peopleList() {
System.out.println("I’m a teacher.");
}
}
publicstaticvoid main(String args[]) {
a = new Student(); // 实例化,接口变量中存放对象的引用
a.peopleList(); // 接口回调
a = new Teacher(); // 实例化,接口变量中存放对象的引用
a.peopleList(); // 接口回调
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要什么参数你传什么啊。你可以把arr arr2 arr 3 设成DVector 的成员变量,然后把DVector 传过去,通过DVector 就能得到你的arr arr2 arr 3。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询