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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fenzheng 中级黑马   /  2014-3-15 13:05  /  2310 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class和interface有什么区别,一个子类可以有多个父类吗?一个父类可以有多个子类吗?

8 个回复

倒序浏览
你说的子类和父类的关系涉及到继承和,实现接口,一个子类只能extends一个父类,但可以implements多个接口,而一个父类可以有多个子类,接口和接口之间也是继承的关系,子类继承父类或者实现接口,要重写父类的方法.
回复 使用道具 举报
接口与抽象类
    性:
  
  都是不断抽取出来的抽象的概念
  
  区别 1
  
  抽象类体现继承关系,一个类只能单继承
  接口体现实现关系,一个类可以多实现
  
  区别 2
  
  抽象类是继承,是 "is a "关系
  接口是实现,是 "like a"关系
  
  区别 3
  
  抽象类中可以定义非抽象方法,供子类直接使用
  接口的方法都是抽象,接口中的成员都有固定修饰符
  






一个子类只能有一个父类,一个父类能有多个子类
回复 使用道具 举报
abstract class抽象类,可以理解成一个普通类加了点抽象方法 ,这个类就是抽象类了.
而interface接口有规定,成员变量必是常量 , 方法必是抽象方法.
差别显而易见.

一个类只能继承一个父类,但能同时实现多个接口.
一个父类可以被多个子类继承.

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
在java的继承体系中,继承都是单继承,也就是说一个子类只允许有一个父类,但是一个类可以被多个其他类继承。就接口而言,是允许多实现的,也就是一个类可以”继承“多个借口,但要注意的是接口实现的关键字是implements,不要混淆了,接口也可以继承接口,当然接口亦可以实现接口。通常情况下,接口与接口之间可以做到多继承,但是要特别指出是接口,也就是一个接口可以继承多个接口关键字是extends,别的什么类什么的是不可以的

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
抽象类中不一定全是抽象方法,但是接口里面的方法必然全是抽象的。
抽象类是一个类,只能够单继承。接口可以多继承。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
相面都说的很全了,我来增加一点。接口中的成员都有固定修饰符,常量:public static final 方法:public abstract 。只是我们平常写的时候把它省略了
回复 使用道具 举报
首先一个类只能有1个父类,但是可以实现多个接口。在abstract class中,可以定义自己的方法供子类使用,也可以定义抽象方法让子类去重写。而接口中所有的方法都是抽象的,实现这个接口的类必须实现这个接口中所有的方法。
关于什么时候用抽象类什么时候用接口LZ可以这样想:有两个类一个是 Cat类 一个是Dog类,他们都有方法 walk,这样就可以抽象出一个Animal的抽象类,在Animal中定义walk方法,这样Cat类和Dog类继承Animal类之后就能直接使用walk方法了。而如果Dog类中有pick方法, 还有一个机器人类 Robot也有pick方法这样可以抽象出一个接口,让Dog和Robot去实现这个接口,并且分别重写pick方法,因为Dog是用嘴,机器人是用机械臂。所以从这里可以看出,Cat和 Dog是Animal的一种,而Dog和Robot有同样的功能,也就是2L所说的is a和like a的关系了,希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你可以这么理解!!
abstract class里面至少有一个抽象方法,否则不能称之为抽象;
对于interface而言,它里面成员变量和成员方法均为抽象,而且都有自己固定修饰符:
常量——public static final,方法——public abstract

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马