版权声明:请尊重个人劳动成果,转载注明出处,谢谢!

目录(?)[+]

接口(Interface)

抽象方法的集合,接口通常以interface来声明。

一个类通过继承接口的方式,从而来继承接口的抽象方法。 
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。  

类描述对象的属性和方法。接口则包含类要实现的方法。 
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法(所有方法都是抽象的方法),否则就必须声明为抽象类。 

接口没有构造方法,支持多重继承,不能包含成员变量,除了static和final变量。

接口的申明方法

[可见度] interface 接口名称 [extends 其他的类名] {//任何类型 final, static 字段public [返回类型] [函数名] ();// 抽象方法(所有都是 public)
}

  接口是隐式抽象的,当声明一个接口和接口中方法的时候,不必使用abstract关键字。接口中的方法都是公有的。

  类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

... implements 接口名称[, 其他接口, 其他接口..., ...] ...

重写接口中的方法时,需注意:

  类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类 中抛出该强制性异常。 
 
类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。

  一个类只能继承一个类,但是能实现多个接口,同时一个接口能继承另一个接口。

  一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用 extends 关键字,子接口继承父接口的方法

抽象类 (Abstract)

 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

  抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类必须被继承,才能被使用。(它没有足够信息描绘一个对象,只有等子类来继承完善后才能使用)

在Java语言中使用abstract class来定义抽象类。

public abstract class Employee
{   //成员变量//成员方法,可以是抽象的或实现的(可以没有抽象方法)[访问权限修饰符] abstract [返回类型] [函数名]();
}

声明抽象方法会造成以下两个结果:

  如果一个类包含抽象方法,那么该类必须是抽象类。但是一个抽象类可以没有抽象方法,只是把类申明为抽象的。 
 
任何子类必须重写父类的抽象方法(一句话抽象方法都要重写,只不过接口的方法全部都是抽象的而已),或者声明自身为抽象类。

区别

  接口不是类,抽象类是一个功能不齐全的类,都不能实例化对象。

  一个类可以实现(implements)多个接口。一个类只能继承(extends)一个抽象类。

   接口没有构造函数,所有方法都是 public abstract的,一般不定义成员变量。(所有的成员变量都是 static final ,而且必须显示初始化)。 
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

  一个实现接口的类,必须实现接口内所描述的所有方法(所有方法都是抽象的方法),否则就必须声明为抽象类。  
如果一个类包含抽象方法,那么该类必须是抽象类。任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

[Java] 接口(Interface)与 抽象类 (Abstract)使用规则和区别相关推荐

  1. C#中接口(Interface)与抽象类(abstract)的区别

    前言:在我学习接口(interface)与抽象类(abstract)时,我发现它们有一些相似之处也有一些不同,本博文来详细说说它们二者之间的区别: 文章目录: 一.不同之处: 1.声明上: 2.成员上 ...

  2. 接口Interface和抽象类abstract class的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  3. 小论接口(interface)和抽象类(abstract class)的区别

    接口是类实现了某一种功能的体现,这种体现往往是对外的,所以重载接口的函数一定是public的 可是初学OO编程的时候,往往会碰到一个问题,既然有接口(interface)的存在,为什么还要有抽象类(a ...

  4. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别

    /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...

  5. java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  6. Java接口interface

    Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...

  7. JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别

    转自:http://blog.csdn.net/zhandoushi1982/article/details/8458081 abstract修饰符可以修饰类和方法. (1)abstract修饰类,会 ...

  8. JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码

    抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...

  9. Java 接口(interface)的用途和好处

    http://write.blog.csdn.net/postedit/41129935 首先不懂什么是interface的可以参考这里 http://blog.csdn.net/nvd11/arti ...

  10. Java接口(interface)的概念及使用

    在抽象类中,可以包含一个或多个抽象方法:但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加"抽象". 接口使用 interface 关键字来声 ...

最新文章

  1. 深入卷积神经网络背后的数学原理
  2. I Hate It(线段树基础)
  3. 陌陌财报双双超预期,什么才是它的基本盘?
  4. kafka是如何解决粘包拆包的
  5. 《英雄联盟:双城之战》全球首映 沉浸式观影打造追剧新潮流
  6. c语言中{的作用,C语言中Static和Const关键字的作用
  7. 转载:cisco voip转码设置
  8. 虚拟机与ubuntu(二):连接访问
  9. STM32使用MCUISP下载程序教程
  10. 隐私计算--21--分布式机器学习
  11. spring security面试
  12. Unity 正交相机和透视相机的屏幕适配
  13. python 爬虫获取商家信息_Python爬取商家联系电话以及各种数据的方法
  14. 石家庄地铁站项目最终总结报告
  15. 全网目前最全python例子(附源码)八、Python实战
  16. 荣耀 MagicBook 系列新品发布会汇总:多款锐龙本、平板电脑登场~~~
  17. 36氪专访融云CEO董晗:8年企服,6年出海,现计划成为「沙特最大科技企业」
  18. 讲座报名|美团无人机团队技术分享:大规模、高精度激光SLAM
  19. 29-折半查找法的使用
  20. (11)LCD1602液晶显示屏

热门文章

  1. Spark读取Parquet格式的数据为Dataframe
  2. Android信使Messenger解析
  3. (0078)iOS开发之支付宝集成:客户端签名与验证
  4. android列表集合点击事件,给ListeView列表中的每一个Item添加点击事件
  5. webpage not available是什么意思_MySQL很想啊,为什么还要有noSQL?
  6. 7.13 T2 Shit 题(shit)
  7. 程序与进程的区别,并发与并行的区别,多进程的实现原理
  8. [No000018C]Vim清除上次的搜索高亮结果-Vim使用技巧(1)
  9. redhat6.4 添加yum本地源和安装virtualbox增强组件
  10. IOS UISearchDisplayController 点击搜索出现黑条问题解决方案