java中为什么不直接用Collection接口,而是还要再造一个他们相应的抽象类?

诸如HashMap、ArrayList等具体类,都是直接继承自AbstractMap或AbstractList,为什么要设置这么个抽象类,而不直接用相应的接口?
还有这些抽象类为什么单单空着size和iterator两个方法不去实现?

3个回答

抽象类可以添加公共方法,一些可以写的代码可以先写好,接口没办法写方法。

public interface Collection extends Iterable
这是接口,没有任何的实现,也不能扩充,需要你自己再次继承,以扩充满足自己需要的类

如果是接口那你要把接口里所有的方法都实现,即使是空实现。但是有时候并不需要用所有的方法,所以用抽象类,只重载你需呀用的方法,这样代码能简洁一点。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java中有抽象类为什么还要接口?
为什么Java程序设计语言要引进接口概念呢?为什么不将Comparable直接设计成如下所示:abstract class Comparable{ public abstract int compareTo(Object other); }然后,一个Employee类再直接扩展这个类,并提供compareTo方法的实现:class Employee extends Comparable{
为什么Java中的Collection类都继承了抽象类还要实现抽象类的接口?
StackOverFlow的答案在这里 传送门 在Java的结合类中,有很多这种操作,一个集合类实现了抽象类后,又显式地实现抽象类实现的接口。我通过一段代码来解释为什么要这样,也可以直接跳过代码,看好处。 解释一下: 现在有四个接口 A,B,C,Aa(Aa,实际上是继承了A,B) 有一个抽象类,该抽象类实现了 Aa,就相当于 AbstractList 实现了 List 有两个版本的实现了,一个在类...
集合接口与抽象类 collection接口 Iterator接口
collection接口配有下面两个基本方法 boolean add(Object obj), Iterator iterator(), add()方法用于向集合中添加对象。如果添加对象之后,集合确实放生了变化,那么返回值为TRUE,否则为false.集合拒绝纳入重复的对象,会返还为false Iterator接口 Iterator接口又称为迭代器 Object next() boo
既有接口,为何还要抽象类
接口是implements,一个类可以实现多个接口,并且要实现接口里的所有抽象方法。这样,接口就有了一个天生的短板,那就是当多个类实现同一个接口时,如果有共同的操作,那么怎么封装,接口里面是不能有实例方法的。比如说,有接口A ,类B1、类B2和类B3实现A,但是B1、B2和B3里面都有一个共同的操作,就比如是查询所有用户保存到一个map中,然后判断当前新增的用户是否存在map中,我们是不能把这个方
Java中的抽象类与接口
一 抽象类 抽象类是一个用关键字abstract所修饰的类,该类只能作为父类被继承,而不能创建对象。抽象类的基本格式为: 访问权限修饰符 abstract class 类名{ // 类体 } 在抽象类中,可以存在一种特殊的方法:抽象方法。抽象方法是只有方法首部而没有方法体的方法(连花括号“{}”都没有),也需要使用abstract关键字,其基本格式为: 访问修饰符 abstra...
java中抽象类与接口
今天第一次知道java中的抽象类可以没有抽象方法,而且可以抽象类中的静态非抽象方法可以通过抽象类名.静态方法名来调用。 第一次知道Java SE 8中interface可以包含default方法,并引入了Lambda表达式。 具体介绍可以参考 关于Lambda表达式:  http://www.infoq.com/cn/articles/Java-se-8-lambda 关于interfac
Java中抽象类和接口
看了抽象类和接口的例子,但是就是不明白他们之间的区别,而且什么时候用抽象类,什么时候用接口,这两者的作用分别是什么
Java中的抽象类和接口
关于Java中的抽象类和接口的讲解
Java中接口和抽象类
java只支持单继承,但可以继承多个接口,interface和abstract class 是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interf...
java中接口和抽象类
抽象方法:在某些情况下,基类无法(或者没有必要)提供被覆盖方法的具体实现,那么就可以将此方法声明成抽象方法; 当一个类中有抽象方法时就要将这个类写为抽象类。 抽象类的一般语法:访问权限 abstract class 类名{ 成员列表 } 抽象方法的一般语法:访问权限 abstract 返回...
Java 中的抽象类与接口
Java抽象类: 1.抽象方法:不明确具体实现,只做方法声明,用abstrats修饰的方法 2.抽象类:类中含有abstrats修饰的方法,该类需要声明为抽象类。 3.抽象类的使用:当继承抽象类后,子类:1.定义成抽象类。2.重写父类中的抽象方法。 Java接口: 1.用interface修饰的类 2.定义:①只能定义public常量②所有的方法必须为抽象方法③多个接口可以被一个类实现(implements)④在jdk8.0版本以上有默认的方法(default 可以是非抽象方法) 综上所述: 接口与抽
java中的接口和抽象类
最近看了一篇介绍接口和抽象类的文章,发现还不错。一下是对文章的总结和自己写的一个实例。总结的可能有些粗糙,建议直接看原文,文章地址:http://www.jiagoushuo.com/article/1000074.html#rd?sukey=ecafc0a7cc4a741b8d173e3714b0d37aed2569a28a62b5eb357b1573f19c80eef74baa1c870e39
Java中抽象类与接口
Java中抽象类与接口 抽象类 抽象类:抽象、笼统、模糊、看不懂、不具体。 抽象类特点: 方法只有声明没有实现,该方法就是抽象方法,需要被abstract修饰。 抽象类的方法必须定义在抽象类中,该类必须也被abstract修饰。 抽象类不可以被实例化。为什么?因为调用抽象方法没有意义。 抽象类必须由其子类覆盖了所有抽象方法后,该子类才可以实例化,否则这个子类还是抽象类。 问题: 抽...
JAVA中的抽象类和接口
Java是典型的面向对象语言,接口和抽象类是Java面向对象设计的两种基础机制。 抽象类:了解抽象类之前,先看一下什么是抽象方法, 抽象方法:只有声明,没有具体实现                   抽象方法必须用abstract关键字进行修饰 abstract void example(); 所以抽象类是不能被实例化的类,可以有一个或者多个抽象方法,也可以没有抽象方法。 抽象类主...
java中的抽象类和接口
一、抽象类 1.1定义:抽象类是用来捕捉子类通用特性的。它不能被实例化,只能被用作子类的超类,使用abstract修饰符来定义。 1.2抽象类和抽象方法: - 有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 - 抽象类和抽象方法都必须使用abstract修饰符来修饰,抽象方法不能有方法体 - 抽象类不能被实例化,所以无法用new关键字来创建抽象类的实例
Java中的接口与抽象类
接口: 抽象类:   抽象类实现接口的最主要的作用是过滤到不需要实现的方法   一般类实现某个接口,会重写接口中的所有方法的实现。但是如果你只想实现接口中的某些方法(不是全部),则定义一个抽象类实现这个接口(方法体内部为空),然后再写个类继承这个抽象类,这就可以满足你的需求,同事这个也就是适配器模式的思想。 ...
为什么在集合框架中已经继承了抽象类还要实现接口
为什么在集合框架中已经继承了抽象类还要实现接口,例如:类HashSet继承了AbstractSet但是同时实现了Set接口? 这是一种记住这个类实现该接口的方法,他不会有任何不良影响,他可以帮助理解代码,无需给定类的完整继承层次。
java 抽象类和接口2--什么时候用接口什么时候用抽象类
java 抽象类和接口1–基本概念 https://blog.csdn.net/qq_26296197/article/details/81315685 从生活的角度看 把编程映射会日常生活进行对照,那么一个东西,抽象类表示它是什么,接口表示它能做什么。举一个栗子,一个Person,他有眼睛、肤色,这些描述一个人的特征可以定义在抽象类中,而一个人的行为如打篮球,所以这些可以定义在接口中。...
为什么java中Thread不直接定义为抽象类?
反正不管怎么样我们用Thread这个类都是要重写run()方法来实现多线程的,而如果要使用Thread类的 其他方法,我们完全可以设置其为static的。那么Thread这个类如果 定义为抽象了岂不是完全可以实现现在的功能而且还可以提醒程序员必须要复写run()方法以减少出错,这样岂不是更好?
java中为什么要用抽象类和接口?
开发过程中,为什么要写一些接口或者抽象类,直接用类代替他们不可以吗?还有两者在使用的时候,我是选择用接口呢还是用抽象类,两者的区别?一直不是很明白,希望可以回答的详细些,因为我是刚入行的菜鸟,在此非常感谢!
Java(JDK1.9)集合框架归纳总结——Collection接口的第一层接口和抽象类
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection的第一层接口和抽象类 Collection第一层常用接口、类继承体系: Collection的直接后继有3个接口和一个抽象类。3个接口分别是 List:Collection接口的有序集合实现,也叫...
java中 抽象类和接口应该怎么用?
RT 初学java 不太理解 rnrn接口没有方法体 rn抽象类不能实例化rnrn该怎么用呢?
为什么集合不直接继承Iterator,而是用内部类?
在java的集合中,如List,Set,为什么要用迭代器?我看了一下源码,大概是这样的:iterator()方法会返回一个Iterator型的实现,而这个实现是一个中Itr的内部类rn[code=Java]rnpublic Iterator iterator() rn return new Itr();rnrnrn//内部类rnprivate class Itr implements Iterator rn public boolean hasNext()rn //……rn rnrn public E next() rn //……rn rnrn public void remove() rn //……rn rn //other method……rnrn[/code]rnrn如果让AbstractList实现Iterator接口,使用的时候将集合的引用赋值给Iterator型的变量不就可以了吗?rn为什么要煞费心机地设计一个内部类?rnrn另外,这几天小弟在看Java编程思想,内部类的那一章,说内部类是用来解决“多重继承”问题的,但这个rn问题接口也可以解决吧?内部类独特的地方在哪里呢?哪位兄台有好的例子可以供参考一下?成分感谢!
java中Collection的子接口Set接口
一.Set接口概述 Set接口是Collection的子接口,Set接口没有提供额外的方法,它用来存储无序的,不可重复的数据。 Set集合不允许包含相同的元素,如果试把二个相同的元素加入到同一个Set集合中,则添加操作失败。 Set判断二个对象是否相同不是使用 ==运算符,而是根据equals()方法。 Set接口有三个实现类,HashSet,LinkedHashSet,TreeSet,但...
Java中Collection接口(基本的集合接口)
集合:Collection子接口有两个,两个子接口分别对应多个子实现类,多个集合数据结构不同,但是他们有共性内容,将共性内容抽取出来,就可以集合继承体系图!数据结构:数据的存储方式Collection:Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 c...
java中的常用的collection接口和map接口
Collection接口 List接口 ArrayList LinkedList Vector Set接口 HashSet TreeSet Queue接口 PriorityQueue Map 接口 HashMap HashTable TreeMap
Java接口和Java抽象类
我看过讲解java接口与java抽象类的最好的一片文章,和大家共享。
JAVA中抽象类与接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。
Java中抽象类和接口的区别
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据
JAVA中抽象类和接口的区别
在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别
Java中的多态,抽象类,接口
Java中的多态,抽象类,接口 多态 在运行期间,判断所引用的对象的实际类型,根据实际情况调用特定的方法,即,同一个对象的多种状态的行为。   多态所需要满足的条件 继承 重写 父类引用指向子类的对象(向上转型)   ⽰例:喜欢宠物的年轻妇⼥ public class Animal { public String name; public Animal(String nam
java中接口和抽象类的区别
抽象类:1.用abstract表示2.里面有一个或多个抽象方法,在方法前加abstract,抽象类中也可以没有抽象方法3.抽象类用extends继承,并且必须重写抽象方法接口1.用implement表示2.接口是极度抽象的类,所有方法都是抽象的,都需要进行重写接口的作用:解决java中的单继承问题,一个类可以实现多个接口,但只能有一个父类共同点:都不能被实例化
java中接口与抽象类的区别
接口和抽象类,大家应该都不陌生吧?这个无论是初学者还是一个老鸟都要经常面对的东西。还记得我当初学习java的时候,当时听了老师讲了半天也没怎么听懂,还记得为了加深理解老师把c++都搬了出来,可是自己当时早已经去和周公下棋了,哪有什么收获可言,不过学习了两年java了,把自己在这个过程中对一些java的理解就记下来吧,毕竟马上就要去工作了,还是要养成写博客的好习惯。话不多说,开讲了 接口,一听名
java中的抽象类跟接口
对于这个话题好多人都比较模糊,也包括了做了几年的老程序员。对于我来说,到现在为止才算有一点清楚 :o 。 1抽象类: 如果一个类不能充分描述这个一个具体对象,那么这个类就被定义为抽象类 1.1 抽象类不能够被实例化。 1.2 抽象类中允许有抽象方法跟普通方法同时存在 1.3 抽象类的定义必须为abstract 1.4 如果抽象类的子类没有实现抽象父类的所有抽象方法,那...
JAVA中包、抽象类和接口
1 包         大家能不能创建多个名称一样的类呢?当然是不可以的。但是包的出现,就解决了这个问题,包以分层方式保存并被明确的引入新的类定义,由此实现把类名空间划分为更多易管理的块的功能。包(package)是类的容器,用来保存划分的类名空间。例如,一个包允许你创建一个名为List的类,你可以把它保存在你自己的包中而不用考虑和其他地方的某个名为List的类相冲突。         这和W...
Java中的抽象类、抽象方法、接口
抽象 Java中抽象的前提是继承关系,没有了继承,抽象类就失去了灵魂。在继承关系中,子类可以继承父类的成员变量和成员方法,但是每个子类的方法的具体实现可能不一致,(可以通过重写(方法覆盖)父类的方法解决)但是这样父类具体实现某个方法就失去了意义。这里我们仅仅对父类中的方法加以声明,不做方法的具体实现,子类中(必须)具体实现父类所有的“为实现的方法”。来更加符合面向对象的多态。 抽象类、抽象方法的...
为什么要接口和抽象类
一直使用抽象类和接口,谁能说说为什么要用这些,用了到底在项目中有什么好处了?rn回答的要深刻些啊!!
java中 抽象类和接口的异同
1、 抽象类:一个类只能继承一个抽象类。若一个类继承一个抽象类,则可以实现也可以不实现抽象成员函数。 接口:一个类可以实现多个接口。若一个类实现一个接口,那么必须实现接口的全部成员函数。 2、 抽象类:成员变量可以是任意类型的。 接口:成员变量都是 public static final 的。 3、 抽象类:成员函数可以是任意类型的,成员函数可以有abstract的(没有具体...
java中的接口和抽象类区别
http://hanhongke123.blog.163.com/blog/static/62223494201081433426189/ 首先,我们来看一下抽象类的概念,java编程思想中说“万物皆对象”,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类是表征我们对...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件