接口 抽象类

转载 2015年07月09日 15:31:53
横看接口竖看类:横向扩展使用接口;纵向扩展使用抽象基类;横向和纵向都要扩展,使用抽象基类实现接口
1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,如果实现一个接口就必须实现它所有的方法。
2.如果给一个接口增加一个方法,他所有的实现类必须都加上这个方法,就算里面什么都不写。
3.一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
4.接口针对的是某一件事而不是针对的某一个类
5.类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
6.抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。
7.抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。
8.这一点也是最重要的一点本质的一点"抽象类是对象的抽象,然接口是一种行为规范"。 

接口可以继承接口 不能实现接口,抽象类可以实现接口不处理方法,但是实现类继承了抽象类则需要实现抽象类继承的接口的方法

接口属性值默认为 public static  final 常量不能更改  接口就是提供一种统一的’协议’,而接口中的属性也属于’协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.

接口只是对一类事物的属性和行为更高层次的抽象对修改关闭,对扩展(不同的实现implements)开放
接口是对开闭原则的一种体现
继承一个实现了某个接口的类 也就实现了那个接口
抽象类是在接口和实体类之间的一个桥梁 


在面向对象领域,抽象类主要用来进行类型隐藏。
我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。
这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。
好比,动物是一个抽象类,人、猴子、老虎就是具体实现的派生类,我们就可以用动物类型来隐藏人、猴子和老虎的类型(java的委托机制)
做一个接口叫做飞行FlyAnimalAction,里面定义一个方法叫做flying,再定义一个方法叫做eat 
做一个类叫做蚊子实现接口,蚊子要实现flying方法,实现自己的eat方法 
做一个类叫做苍蝇实现接口,苍蝇也要实现flying方法,实现自己的eat方法 
你发现所有会飞的动物都要实现这个接口,很麻烦,不如 
做一个抽象类FlyAnimal,然后实现上面的接口 
在里面实现flying这个方法,因为大部分的飞行动作是一样的,而eat方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的 


抽象类与接口(对比总结)

1、先记着这一点,帮助你理解哦。 答:抽象类最最重要的就是比普通的类多了个抽象方法,另外还有……我觉得这得慢慢再去悟……。 2、接口有的,抽象类都有,但是抽象类有的,接口就不一定有了。 ...
  • cadi2011
  • cadi2011
  • 2016年02月14日 22:46
  • 798

抽象类及接口在设计时考虑的如何选择问题

关于抽象类和接口的相关视频里有,这就不说了,老房问了一个特别无语的问题,用我的话说就是钻牛角尖,但是这也涉及到了设计层面的犯愁,所以我还是找找了资料看看了,下边简单的给大家说说吧。 老房的问题是,如...
  • dreamsky1989
  • dreamsky1989
  • 2012年03月25日 04:43
  • 1110

Java 抽象类、普通类、接口的区别——值得你一看的干货

【概念】 抽象类、具体类是相对的,并非绝对的。抽象是一种概念性名词,具体是一种可见可触摸的现实对象。概念越小,则其抽象程度就越大,其外延也越大,反之亦然。简单说,比如“人”比“男人”抽象...
  • csdn_aiyang
  • csdn_aiyang
  • 2017年05月04日 16:26
  • 3106

接口和抽象类的区别---相信你看完不会再混淆了

一、引言 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一...
  • wenwen091100304
  • wenwen091100304
  • 2015年09月12日 11:09
  • 22906

java提高篇(四)-----抽象类与接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。        抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两...
  • chenssy
  • chenssy
  • 2013年10月18日 21:04
  • 142457

浅析C#中抽象类和接口的区别

文章《浅析C#中接口的重要性》中讲述了如何声明和使用接口。但是C#具有abstract关键字形成的抽象类,那么二者我们该如何选择呢!C#允许把类和函数声明为abstract。抽象类不能实例化,而抽象函...
  • wangshubo1989
  • wangshubo1989
  • 2015年09月01日 09:00
  • 3578

既有接口,为何还要抽象类

接口是implements,一个类可以实现多个接口,并且要实现接口里的所有抽象方法。这样,接口就有了一个天生的短板,那就是当多个类实现同一个接口时,如果有共同的操作,那么怎么封装,接口里面是不能有实例...
  • xinqing5130
  • xinqing5130
  • 2017年06月02日 14:47
  • 262

抽象类和接口分别应该在什么时候使用

(转载)http://www.onmpw.com/tm/xwzj/prolan_151.html 在本篇我们将要学到在什么情况下使用抽象类要比使用接口程序更有效率。 抽象类的使用 一个抽象类...
  • u010746364
  • u010746364
  • 2016年06月14日 10:48
  • 1408

接口和抽象类的联系和区别

一 接口和抽象类的相似性 1 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。 2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法...
  • chengqiuming
  • chengqiuming
  • 2017年04月12日 09:57
  • 3358

面试题_抽象类和接口的区别

含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不...
  • baidu_31337243
  • baidu_31337243
  • 2015年09月15日 21:35
  • 1796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口 抽象类
举报原因:
原因补充:

(最多只允许输入30个字)