接口 抽象类

转载 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方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的 


抽象类和接口的区别、为什么用抽象类。

面试被问到抽象类的问题。答得稀烂。。。  网上再学习了一次,在这里记下看到各位大虾的金言。  一、抽象类:  在面向对象领域,抽象类主要用来进行类型隐藏。那什么是类型隐藏呢?我们可以构造出一...
  • wusuopuBUPT
  • wusuopuBUPT
  • 2013年03月18日 17:42
  • 10333

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

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

unity3D__复习(接口与抽象类的区别)

欢迎大家关注我的日志,简单的复习下以前的知识: 一、抽象类: 1.在C#中使用关键字 abstract 来定义抽象类和抽象方法。 2.不能初始化的类被叫做抽象类,它们只提供部分实现,...
  • qq_23337215
  • qq_23337215
  • 2014年12月26日 20:07
  • 532

总结抽象类与接口的关联和区别

对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,...
  • hupoling
  • hupoling
  • 2016年09月06日 10:26
  • 452

抽象类和接口的区别是什么?在使用上是如何选择的?

定义: 1、声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstra...
  • hjp1137
  • hjp1137
  • 2015年09月16日 15:27
  • 926

小鸦-Java8抽象类与接口的区别

前序: 被不少考官问过, 这次想重新整理一下.我们以下面的表格作为参考 原地址: http://www.importnew.com/12399.html (侵删)首先, 我们必须明白, 抽象类是什么...
  • u014041227
  • u014041227
  • 2017年03月28日 00:59
  • 288

抽象类、接口的区别 和 抽象类可以不实现接口的全部方法

抽象类和接口的区别   抽象类里面可以有非抽象的方法,接口里只能有抽象方法。   抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号。    抽象类(abstract...
  • taoshengyijiuzt
  • taoshengyijiuzt
  • 2015年06月16日 20:58
  • 1619

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

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

接口和抽象类的异同——加入Java8的特性。

Java中,抽象类和接口有相似的地方。下面我们就来细说说接口和抽象类的异同。首先是相同的地方:1. 接口和抽象类都能定义方法和属性。 2. 接口和抽象类都是看作是一种特殊的类。大部分的时候,定义的...
  • a907691592
  • a907691592
  • 2016年06月06日 20:11
  • 2823

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

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

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