java没有多继承,用接口来实现多继承的功能,但哪里体现了多继承啊?我对接口的概念一直弄不清楚,请大家帮忙!

climber 2000-08-19 10:00:00
加精
...全文
439 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunni 2001-09-18
  • 打赏
  • 举报
回复
interface可以模拟多继承,可是继承的只是接口,代码还要重新写
xiaoya2001 2001-07-25
  • 打赏
  • 举报
回复
其实,接口和类的区别要两者的功能来考虑
一般接口在编程中不常用,因为没有多少意义,方法在类中定义就够了
接口的最重要的功能是继承一些特殊对象(如RemoteObject等),使得
继承该接口的类具有操作远程对象的功能(详见RMI编程),此外,接口
具有和环境交互的功能。
Mail:xingf2001@sina.com.cn
Tommy Chang 2000-08-30
  • 打赏
  • 举报
回复
其实书本上C++里面的多重继承确实要比这种相对较简单的定义和实现分开的方法更灵活,但是对于一个系统,越多的多重继承应用要付出越多的代价来组织和管理代码,而且大多数情况下,不一定要用多重继承才能实现特定的功能,不一定能大幅提高开发效率......。开发人员始终根据开发的应用层次不同,而要分多个方向,目前java从底层到高层虽然都有相应的产品或规范,但是仍然需要c++等其他开发平台或语言来配合。java推出已经有四年了,但是多重继承方面是从1.1.x后更强调interface的用途,没有模仿传统c++多重继承再作扩展了。

面向对象各个方面中突出强调多重继承的人也不多见,多态恐怕才是大家最要用的东西。
对于java这样一个跨平台面向对象的平台,抛弃传统多重继承,开辟interface这条路,确实有他的道理,因为java是为了方便人编程,而且易管理,还要跨平台。我个人看法,java抛弃旧的多重继承办法跟当初抛弃指针一样,都是顺应java的思想。

(BTW,java底层的理论有许多,在下接触不到,但想当年看过一位老先生的话,在java里面实现跟c++一样的多重继承,其实比当初在c++实现还要方便。就好象有的事情不是能不能作的问题,而是这样作好不好)

希望朋友们多多指教。

:)

oicq: 1766598
mail: cxgtommy@sina.com
allan 2000-08-29
  • 打赏
  • 举报
回复
但用interface实现的只是接口的多重继承,要想实现真正的多重继承,恐怕还得用内部类吧。版主,是吧?
元明 2000-08-29
  • 打赏
  • 举报
回复
接我的上贴:

举个例子,附:
//Home.java

import java.util.*

interface(关键字) Home {
int pzz = 4;
void desk();
String chair();
}

class Zhang implements Home { //实现接口后,此时我们获得了一个
public void desk() { //普通类"Zhang",以后如果继承此
System.out.println("Zhang.desk()"); //类,我们可对它进行扩展.
} //implements是一个关键字
public Sring chair() {
return "Zhang";
}
}

class Li implements Home {
public void desk() {
Systiem.out.println("Li.desk()");
}
public String chair() {
return "Li";
}
}

可以将接口想像为"纯"抽象类,可以定义方法名,自变量列表,返回类型,但不规定方法的主体.接口中的基本数据类型(就是系统定义的标识符,如:int,boolen)都默认为static 和 final,方法默认为public,即使不加public关键字.


关于多重继承,java规定:如果确实想从一个非接口继承,那么只能从一个继承.如:

//Deer.java

import java.util.*

interface SporttedDeer {
void antler();
}

interface RedDeer {
void deerskin();
}

class Giraffe {
void anler() {
System.out.println("Giraffe.anler");
}
}

class Deer extends Giraffe implements
SporttedDeer, RedDeer {
void deerskin() {
System.out.println("Deer.deerskin");
}
}

使用接口能上塑造形至多个基础类.

不知我举的几个简单的例子你理解了没有?你可以上机调试一下.
元明 2000-08-28
  • 打赏
  • 举报
回复
接口其实也是一种类,不过比抽象类更进了一步,Java不允许我们直接定义接口类的对象,只能通过一个实现类中定义的方法去覆盖接口类中的方法.
哦,不行了今天没时间了,明天我接着答复,OK!!
Tommy Chang 2000-08-22
  • 打赏
  • 举报
回复
event和listener本身就是定义成接口的,如何触发,如何响应,原理就两页纸,但是要明白真正的用途,恐怕还是要看看别人的书或自己动手。
想用好event & listener的话,最好的教材就是applet的教材,一定是jdk1.1.x以上的版本。

:)
javabean既然起这个名字,而且个人网站内容不错,肯定是个中高手,leslielu不防请教下他老人家。

my oicq: 1766598
mail: cxgtommy@sina.com
leslielu 2000-08-21
  • 打赏
  • 举报
回复
cxgtommy:
给讲讲吧。
Event & Listener就是interface的极好应用,它的机制你知道吗?这可是javabean的一个基本特色。

javabean 2000-08-19
  • 打赏
  • 举报
回复
所谓的接口,实际上也是一个类,只是在接口中声明了一组常量和方法,但事实上没有实现任何方法。这有点类似抽象类,接口需要其他类来提供实现自己所定义方法的过程,而不是自己提供。
这里的用接口实现多继承实际上就是可以用类来实现多个接口中的方法。如下:

class Triangle implements Brushes,Paints,Surface {

……
/*every method in Brushes、Paints and Surface must be implemented in Triangle */
……

}

另外,如果需要extends从句,则implements从句应放在extends从句的后面。比如:

class Triangle extends MyGraphics implements Brushes{

……
/* every method in Brushes must be implemented here */
……

}

就这样,不知对你有没有帮助,其实我也不是很懂,有机会我们再一同探讨,OK?

Tommy Chang 2000-08-19
  • 打赏
  • 举报
回复
如果你能讲出虚类和接口之间区别和联系的话,相信这个问题已经得到答案。
给你再添个问题,Event & Listener就是interface的极好应用,它的机制你知道吗?这可是javabean的一个基本特色。

:)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧