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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-22 18:33  /  1298 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List, Set, Map是否继承自Collection接口?

abstract class和interface有什么区别?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 23:06

3 个回复

倒序浏览
abstract类中可以有非抽象方法以及正常类的各种属性
只不过不能创建对象罢了
interface只能有抽象方法 而且属性必须是static final 的
回复 使用道具 举报
学习日志还没做到那个地方

copy一下
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。
含有abstract方法的类必须定义为abstract class,abstract class类中的方
法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)
子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有
实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须
是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量
类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,
   不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
    eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,
    并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问
     类型可以任意,但接口中定义的变量只能是public static final类型,并且默认
     即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
http://java.itcast.cn/news/20120921/15455818021.shtml

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
List set 继承Collection接口 ,Map 不是。List  和 set 存放的单个的Object  ,Map 存放的是键值对。

abstract class和interface有什么区别:
1. interface需要实现,要用implements,而abstract class需要继承,要用extends。
2. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
3 interface强调特定功能的实现,而abstract class强调所属关系。
4 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

这个选择有两点含义:
    一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。
    二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。

5. abstract class是interface与Class的中介。
interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstract class或Class中。
abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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