java中怎么用接口啊!

litdong 2003-04-14 11:37:14
java中可以定义接口,在具体类中实现接口,可怎么用接口呢!在vb中,我可以定义一个接口对象变量,然后引用使用实现多态性,在java中,我可以定义接口对象变量然后使用吗?
初学,请指教!
...全文
104 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
teafang 2003-04-14
同志们说说接口和虚类的区别优势和使用场合如何 我对这个一直不清楚
回复
teafang 2003-04-14
嘿嘿 手误 手误 implements写错了
应该用你实现后的类来创建对象
例如 GhostKiller(铁猴子) 的例子里你应该用
TestInterface yourobj = new TestInterface();
yourobj.getAA(); 而不是用AA
回复
徐蕴 2003-04-14
不好意思发错了
public interface AA {
public void getAA();
}
public class AAImpl implements AA{
public void getAA(){
//...
return;
}
//...
}


AA objaa =new AAImpl();
objaa.getAA();
回复
徐蕴 2003-04-14
可以这样
public interface AA{
回复
litdong 2003-04-14
是,这我明白,可

public interface AA {
public void getAA();
}

我的意思是说:实现后可以这样吗:AA objaa =new AA();
objaa.getAA();
回复
yyfzy 2003-04-14
对,接口的方法必须自己实现
回复
yjawal8071 2003-04-14
implements 实现各种里面的方法
回复
csrcom 2003-04-14
楼上的每个人说的都有道理!
回复
GhostKiller 2003-04-14
当然你必须实现接口中的方法才行.
回复
GhostKiller 2003-04-14
更正楼上的 implement -----> implements

如果你要自己编写一个接口,下面是例子:
AA.java

public interface AA {
public void getAA();
}


TestInterface.java

public class TestInterface implements AA {

public void getAA() {
System.out.println("aa");
}

public static void main(String[] args) {
}
}

注意接口是在一个单独的文件中. 实现用implements.
回复
moumouren 2003-04-14
up 用implement并自己实现接口中定义的方法
回复
teafang 2003-04-14
必须实现你的接口
如 public class 你的类 implement 接口{

}
在你的类定义里面必须实现你在接口中定义的方法
回复
sbks 2003-04-14
to wangsheng1028(傻乎乎) :
用接口来体现多继承。在java中,类之间只能单继承,在单继承的情况下,父类有什么特性,子类就只能这么多特性,而无法拥有其它非父类的特性。
接口允许你拥有其它类的特性。

我也是新手,不知我理解得对不对
回复
xzwsun 2003-04-14
我可以定义接口对象变量然后使用吗?

可以!
回复
wangsheng1028 2003-04-14
接口有什么特别的用处
偶菜鸟,不懂呀!!
回复
litdong 2003-04-14
其实,我的目的很简单,仅仅想知道能否在java中“能否控制实现该接口的类的任何对象“,看来我的想法没错!可以!咱们接着teafang的问题讨论:)说说接口和虚类的区别优势和使用场合如何
回复
litdong 2003-04-14
Java 技巧 10:用 Java 实现回调例程
用 Java 接口实现回调函数的等价功能

作者:John D. Mitchell
摘要
在 Java 支持方法指针之前,Java 接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧。
熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java 的面向对象模型目前并不支持方法指针,这样似乎就不可能使用这种很好的机制。但我们并不是一点办法都没有!
Java 的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。

例如,假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:

public interface InterestingEvent
{
// 这仅是一个常规方法。因此如果需要,
// 它可有返回值,也可接收参数。
public void interestingEvent ();
}


这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。与在将 C++ 代码用于 Motif 时使用窗口小部件的数据域来容纳对象指针的难以控制的 C 函数相比,这种方法要好得多。

发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法。

public class EventNotifier
{
private InterestingEvent ie;
private boolean somethingHappened;

public EventNotifier (InterestingEvent event)
{
// 保存事件对象以备后用。
ie = event;

// 还没有要报告的事件。
somethingHappened = false;
}

//...

public void doWork ()
{
// 检查在别处设置的谓词。
if (somethingHappened)
{
// 通过调用接口的这个方法发出事件信号。
ie.interestingEvent ();
}
//...
}

// ...
}


在上例中,我使用 somethingHappened 谓词来跟踪是否应触发事件。在许多情况下,调用此方法足以保证向 interestingEvent() 发出信号。

希望接收事件通知的代码必须实现 InterestingEvent 接口,并将自身引用传递给事件通知程序。

public class CallMe implements InterestingEvent
{
private EventNotifier en;

public CallMe ()
{
// 创建事件通知程序,并将自身引用传递给它。
en = new EventNotifier (this);
}

// 为事件定义实际的处理程序。
public void interestingEvent ()
{
// 噢!必定发生了感兴趣的事件!
// 执行某些操作 ...
}

//...
}


这就是所要做的全部工作。我希望这个简单的 Java 习惯用法会使您更有信心地转向 Java。



呵呵,谢了!看来可以!!
回复
Weblog 2003-04-14
abstract class中可以有一些函数实现的动作,但在interface中,一点都没有,是纯粹的定义;
在extend抽象类的时候,subclass必须实现abstract class中的所有method,否则该subclass仍然是abstract的,而interface一般用来实现java中的多重继承。
回复
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2003-04-14 11:37
社区公告
暂无公告