A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘永昌 黑马帝   /  2011-11-1 23:03  /  3029 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

继承与接口的功能好相似,有什么区别?

14 个回复

倒序浏览
区别是接口里的方法没有实现
回复 使用道具 举报
继承只能是单一继承关系也就是说某一个类只能继承一个类,“接口”可以实现多个接口,就是说一个类可以实现多个接口。
回复 使用道具 举报
java中只能单一继承,为了解决这个问题就有了接口,一个类可以实现多个接口,接口中的方法必须去实现。
回复 使用道具 举报
类只能单继承,接口可以多继承(接口应该叫实现),也即是,一个类只能继承一个父类,但可以实现多个接口。
从父类继承的方法不一定需要去实现或重写,但类所要实现的接口的方法必须去实现。
回复 使用道具 举报
本帖最后由 想好了再写 于 2011-11-2 00:22 编辑

前几天在看类加载器的时候自己总结的:
1、抽象方法和抽象类:
抽象方法(类)的定义:
  在定义类和方法时加上abstract关键字就可以定义抽象方法和抽象类。
  抽象方法只有方法头,没有方法体,代替方法体的是一个分号;
  eg: abstract class a{
    void func();
   }  
  如果在类中包含抽象方法,该类必须声明为抽象类,但是抽象类可以不包含抽象方法。
  不能创建抽象类对象,必须得抽象类派生出子类,在子类中实现所有抽象方法后才可以创建子类对象。
如果子类没有实现超类中的所有抽象方法,则子类也必须定义为抽象类。
2、接口:
接口的定义:
  接口是一种特殊的抽象类,接口中的所有方法都是抽象方法,所有变量都是静态常量。接口只是属性 ,方法的规格说明,一个类可以实现多个接口,从而拥有多个接口的特征。从另一个角度来说,接口是Java克服了单继承的缺点
使用关键字interface来定义接口
  eg: interface A{
    //常量定义
    //抽象方法定义
   }
接口中的方法默认是public abstract修饰的,所以都是抽象方法;接口中的成员变量默认是public static final修饰,都是静态常量。
接口的继承:
  接口与类一样,通过extends关键字定义继承关系,接口之间也是单继承的,即任何一个接口只能有一个父亲接口。
接口的实现:
  一个类通过使用关键字implements声明实现一个或多个接口,如果实现多个接口,用逗号隔开接口名。

接口是抽象类的一个极端。



发上来之后,一看貌似跑偏了。。。泪奔啊,晚上脑子不听使唤了

但是从上面的定义中就可以看出类继承跟类实现接口功能的不同了,类继承,继承了父类的一些除private的成员变量跟方法,子类中可以实现对父类方法的覆盖,而实现接口就继承了接口中的所以成员变量跟方法,而且必须实现接口中定义的所有方法(接口中默认所有方法都是抽象方法),否则该类必须声明为抽象类。
额。。。暂时就想到这些。

评分

参与人数 1技术分 +2 收起 理由
李印东老师 + 2 很给力!

查看全部评分

回复 使用道具 举报
沙铁健 黑马帝 2011-11-2 00:13:13
7#
类只能单继承,接口可以多实现  类的继承一般继承的是事物的属性,如:姓名,年龄,性别   等,而接口的实现 一般是实现事物的行为,如:行走,飞翔,游泳(这比较抽象,在一般项目中大部分是指对某事物的增删改查等操作)
回复 使用道具 举报
李建雄 黑马帝 2011-11-2 00:13:30
8#
java中的继承只支持单一继承,去除了c++中的多继承,因为多继承会使程序结构复杂,难以维护.
java中支持多重继承:即"儿子还有儿子" java中提供了的另一种机制实现多继承,即:接口
继承和接口都是多态的的表现方式
但是,继承的使用要慎重考虑,因为他的ou合性高,除非两个类之间确实有"is a"关系,即"父子关系"否则提倡用接口
因为它降低了类与类之间的关系,接口提供了功能的扩展性   因为一个类可以实现多个接口
所以说,面向接口编程,呵呵!
在代码书写上:继承后,子类可不作代码修改,就能拥有父类的一切非私有的功能,如果父类有抽象类,子类就有实现,或者继续抽象,而实现接口后,实现了接口的类,必须实现其方法,或者继续抽象.



回复 使用道具 举报
张冬冬 黑马帝 2011-11-2 00:52:43
9#
继承, 一个类继承另一个类, 可以得到其所有可见成员. java只支持单继承, 不支持多继承, 可以多重继承. 用extends关键字继承父类, 子类可以当做父类来用, 这叫向上转型. 父类变量引用子类对象时, 不能调用其特有方法, 如果需要使用, 那么可以将父类变量强制类型转换为子类, 强转之前一般需要进行判断, 用instanceof.
接口,是一个特殊的抽象类, 其中所有方法都是抽象的, 一个类可以实现多个接口, 更好的支持了多态. 接口用interface定义.使用implements实现. 接口中的方法默认被public abstract修饰. 接口中的属性默认被public static final修饰.
回复 使用道具 举报
白倩 黑马帝 2011-11-2 07:53:04
10#
java中的继承只支持单继承,接口可以实现多继承,更好的体现了多态!

评分

参与人数 1黑马币 +2 收起 理由
lipanfeng + 2 赞一个!

查看全部评分

回复 使用道具 举报
黄健 黑马帝 2011-11-2 09:24:02
11#
继承:可以解决代码重用,更好的维护代码的层次
接口:可以定义相互之间调用的规则,如电脑上的USB插槽,你可以插鼠标,也可以插键盘,还能插摄像头,甚至给手机充电,因为他们都实现了USB接口定义的规则
回复 使用道具 举报
fso918 黑马帝 2011-11-2 12:49:17
12#
黄健 发表于 2011-11-2 09:24
继承:可以解决代码重用,更好的维护代码的层次
接口:可以定义相互之间调用的规则,如电脑上的USB插槽,你 ...

继承:本质上就是为了简化代码书写的,比较实际的例子就是,AWT的Adaptor类簇和GenericServlet类、代理类模式等,就是为了避免自己写过多的重复的方法,而只重写自己关心的方法。
接口:主要用于实现功能模块。我认为其主要不是为了实现多态(多态最主要体现在方法的调用上);接口主要就是为了实现功能模块之间的松耦合关系,方便系统的功能扩展及维护。所以,大师们都说要面向接口编程。也就是说 接口 的设计 影响系统性能 及开发成本,而继承 只能让你少写一些代码,当然继承设计的好,也能提高开发效率。
回复 使用道具 举报
张翼 黑马帝 2011-11-7 19:57:32
13#
我的理解是继承和接口都是一个包,在这样的一个包中,有很多的方法,接口的方法必须被实现,而继承类似抽象,可以选择一部分方法和属性去实现。
回复 使用道具 举报
继承是一些公用的类,如声明一个人的类,那么单个的人可以继承这个类,和这个类中的方法和重写这个类中得方法,被继承的类可以有私有方法,具体的方法实现,而接口则不能,里面只有方法体,里面的不能有私有方法,要用接口类需要重写接口里面的方法,接口是Java面向对象中多态的一种实现方法。
回复 使用道具 举报
接口值声明了函数,需要在实现接口的类中去实现这些方法,继承则不存在去实现父类中的方法问题,而是直接继承过来。以后可能了解的更深一些,设计模式有面向接口编程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马