接口 抽象类

转载 2015年07月09日 15:04:59
横看接口竖看类:横向扩展使用接口;纵向扩展使用抽象基类;横向和纵向都要扩展,使用抽象基类实现接口
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方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的 


相关文章推荐

Java-面向对象(高级篇)--抽象类与接口的应用

抽象类与接口的应用 一. 抽象类的实际应用——模板设计 通过对象的多态性可以为抽象类实例化,那么抽象类该如何使用那?假设人分为学生和工人,学生和工人都可以说话,但是说的内容不相同,那么说话的功能...

抽象类和接口的区别

  • 2014年04月23日 19:24
  • 3KB
  • 下载

关于接口和抽象类的案例

  • 2014年08月25日 21:28
  • 619B
  • 下载

工作总结-C#抽象类,接口,以及UnityAction

C#的抽象类及接口设计蛮奇怪。先说抽象类,抽象类允许抽象方法,也允许不抽象的方法。额外一提,当你使用子类去继承基类完成方法重写时,千万要记得用override来修饰你的方法声明,否则c#不会认为你在重...

Java抽象类和接口

  • 2014年09月13日 12:15
  • 1KB
  • 下载

JAVA中抽象类与接口的区别

  • 2014年05月06日 22:23
  • 49KB
  • 下载

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

(转载)http://www.onmpw.com/tm/xwzj/prolan_151.html 在本篇我们将要学到在什么情况下使用抽象类要比使用接口程序更有效率。 抽象类的使用 一个抽象类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口 抽象类
举报原因:
原因补充:

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