接口 抽象类

来源:互联网 发布:知乎 旅游带什么 编辑:程序博客网 时间:2024/05/20 21:22
横看接口竖看类:横向扩展使用接口;纵向扩展使用抽象基类;横向和纵向都要扩展,使用抽象基类实现接口
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方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的 


0 0
原创粉丝点击