关于包得引用问题(50分)

  • 主题发起人 主题发起人 stonesll
  • 开始时间 开始时间
S

stonesll

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了一个包,想在其它应用程序中引用,怎么总不成功?
例如:先定义包:
package c08;
interface Compare {
boolean lessThan(Object lhs,Object rhs);
boolean lessThanOrEqual(Object lhs,Object rhs);
}
编译生成Compare.java
然后引用:
package c08;
import java.util.*;
public class SortVector extends Vector{
private Compare compare;
public SortVector(Compare comp) {
compare = comp;
}
。。。。。
}
怎么Compare总是不存在得类?
 
Compare是个接口啊,我记得不可以被实例化的吧。
private Compare compare;//不可以这么做的
同时抽象类也不可以被实例化。
 
接口不能实例化的
用implements生成新的类再用该类,要重载接口内的方法
class MyCompare implements Compare {
boolean lessThan(Object lhs,Object rhs)
{
};
boolean lessThanOrEqual(Object lhs,Object rhs)
{
};
}
然后就可以用
private compare MyCompare;
 
我这个例子可是“JAVA编程思想”中的例子。我只要将两者和在一起,也就是不存在调用包的问题
,那么就可以通过编译。如下:
import java.util.*;
interface Compare {
boolean lessThan(Object lhs,Object rhs);
boolean lessThanOrEqual(Object lhs,Object rhs);
}
public class SortVector extends Vector{
private Compare compare;
public SortVector(Compare comp) {
compare = comp;
}
。。。。。
}
再问:如果我需要引用的包不是一个接口,而是一个类,那我该怎么在其他引用程序中引用,
难道只能在这个应用程序中将该类在重定义一次吗?
 
private Compare compare;
//申明而已
public SortVector(Compare comp) {
这样写是对的
因为你只是申明一个接口 并没有实例化他。
而 public SortVector(Compare comp) 这样写得也是很正确的
目的是希望接受一个显现接口的类(或者子类)。
这就是多态的具体运用
你在调用public SortVector的时候 传递的参数,一定要是实现了Compare接口的类(后者子类)
 
~~
如果我需要引用的包不是一个接口~而是一个类,那我该怎么在其他引用程序中引用,
~~~
先声明
在实例化
[:)]
没有什么特别的地方
 
代码没有什么错啊,应该跟包的引用没关
可能是给SortVector传的参数comp的实例化有问题
Compare 是接口,应该用实现该接口的类来实例化。
如:
Compare comp=new MyCompare();
 
cadwolf , stonesll 两位解答的非常正确,,
我昨天刚看到<thanking in java>那一节,那里是这样说的.
有资料可以证实的.
呵呵.~!!~
 
接受答案了.
 
后退
顶部