接口与内部类为我们提供了一种接口与实现分离的更加结构化的方法。

1.抽象类与抽象方法

抽象类,作为普通的类和接口之间的一种中庸之道。

抽象方法:仅有声明而没有方法体,如abstract void play();抽象方法必须用abstract修饰,且必须为public或者protected。

抽象类:包含抽象方法的类。若一个类包含一个或者多个抽象方法,该类必须限定为abstract(抽象的)。抽象类不能实例化,且子类若没有实现父类的抽象方法,也必须限定为abstract。

创建抽象类和抽象方法非常有用,可以使类的抽象性明确起来

2.接口

interface关键字产生一个完全抽象的类,不提供任何具体实现。

接口允许创建者确定方法名、参数列表、和返回类型,但是没有任何的方法实体。因此,接口常被用来建立类与类之间的协议。

接口允许多重继承,因此继承多个接口的类可以向上转型为多种基类的类型。

接口中的域隐式的为static、final。接口中定义的域不能是“空final”,但是可以是非常量表达式初始化(如可以使用random初始化)。

要实现一个接口,需要使用implements关键字。

接口要么加public,要么默认只有包访问权限;接口中的方法默认为public。

3.完全解耦

策略设计模式模式:创建一个能够根据所传递的参数的对象的不同而具有不同行为的方法。

适配器模式:作为两个不兼容接口之间的桥梁。

工厂设计模式:创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象

参考设计模式总结

4.java的多重继承

导出类不强制要求必须有一个是抽象的或者具体的(无抽象方法)“基类”,但是最多只能有一个“基类”,其余必须都是接口。

可以继承任意多个接口(implements关键字后,用逗号隔开),并且可以向上转型为每个接口(由此可以带来很多灵活性)。

5.通过继承扩展接口

通过继承,可以在接口中添加新的方法,以及组合数个接口。

interface Monster {

void menace();

}

interface DangerousMonster extends Monster {

void destroy();

}

interface Lethal {

void kill();

}

interface Vampire extends DangerousMonster, Lethal {

void drinkBlood();

}

6.接口与抽象类的区别

1.语法层面上的区别

抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

抽象类除了不能实例化外,与普通类没有区别;而接口是完全不同的类型;

一个类只能继承一个抽象类,而一个类却可以实现多个接口;

抽象类可以有构造器,但是接口不能有构造器;

往抽象类中添加新的方法,不需要改变你现在的代码。但往接口中添加方法,那么你必须改变实现该接口的类

2.设计层面上的区别

抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。继承是一个 "是不是"的关系,而接口实现则是 "有没有"的关系;

设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。

7.参考文献:

java编程思想 接口_java编程思想——接口相关推荐

  1. java 编程思想 并发_java编程思想-java中的并发(一)

    一.基本的线程机制 并发编程使我们可以将程序划分为多个分离的.独立运行的任务.通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动. 线程模型为编程带来了便利,它简化了在单一程序中同时jia ...

  2. java编程思想读书_JAVA编程思想读书记(一)

    JAVA是面向对象的语言,这一点每一个开发者都知道.但是享受于在myeclipse上自动生成,自动解决一切问题的时候,有些基础的我们也许会忘掉.我能明显感觉到自己对于软件的依赖以及基础知识的流失,所以 ...

  3. java面试编程面试题_Java编程面试的前50个问题

    java面试编程面试题 Java Programming Interview Questions are always the deciding factor in any Java intervie ...

  4. java list 接口_Java 集合 List接口

    [TOC] List接口 概述有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的 ...

  5. php接口和java接口_java和php接口的区别是什么

    java和php接口的区别是:1.php接口中的抽象方法只能是public的,默认也是public权限:2.java中私有方法使用private修饰,供接口中的默认方法或者静态方法调用. [相关学习推 ...

  6. java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?

    接口的子类必须实现接口的全部方法吗? 接口的子类必须实现接口中全部的方法吗?答案:不是.原因如下: 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因 ...

  7. java抽象类和接口_Java抽象类和接口类

    Java中接口和抽象类的区别是什么?什么时候用接口?什么时候用抽象类?抽象类和接口存在的意义是什么?能解决哪些编程问题? 1)类关键字修饰符: 抽象类使用abstract修饰,含有抽象方法(使用abs ...

  8. java 类 抽象类 接口_Java抽象类和接口

    抽象类和接口 一.抽象类和抽象方法 对于抽象类,首先需要介绍抽象方法,而抽象类因抽象方法的存在而存在 1.抽象方法 (1)必要性: 有些父类方法不确定如何写方法体,但是对于继承它的子类又必须用到这个方 ...

  9. java 内部类声明 抽象类_Java 抽象类、接口、内部类

    抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实 ...

  10. java抽象类实现接口_Java——抽象类实现接口

    在Java中,使用抽象类来实现接口,并不是毫无作用.相反,有时间有很大的作用. 当你只想实现接口中的个别方法(不是所有方法)时,你可以先写一个抽象类来实现该接口,并实现除了你想要的方法之外的所有方法( ...

最新文章

  1. 近期在看的一段JS(谁能看出我想实现什么功能)
  2. OpenHub框架进行的异步通信
  3. 高清动漫壁纸,满足动漫视觉控的你
  4. 为了离去的纪念——google
  5. udhcp源码详解(二)--转
  6. §4.1.2数学归纳法证明不等式第6题 (复旦大学2004年保送生考试数学试题)
  7. Android黑名单自动挂断电话
  8. [迁移] Luac的使用
  9. 隐马尔可夫模型(四)学习问题
  10. mybatis用注解实现 一对一,一对多,多对多哟
  11. WebStorm设置px转换rem,亲测有效!
  12. 大都会人寿三周的工作回顾
  13. 系统盘修复计算机命令,win10系统无法正常开机提示引导文件丢失使用命令修复的方法 无需U盘...
  14. 掌银环境 和 微信浏览器 图片变形问题
  15. 学习前端怎么样?优势有哪些
  16. java汉字转换为拼音首字母
  17. 【陈工笔记】# LaTeX 中,图片如何不置顶? #
  18. 如何利用免费小说引流?小说平台怎么免费推广引流?
  19. 战德臣数据库ppt_为我们的健康数据而战
  20. C# 一步步连接操作ACCESS数据库

热门文章

  1. php显示控制器不存在,thinkphp5 访问第二模块的时候提示控制器不存在的解决方案...
  2. HDU 2222 Keywords Search【ACAM】
  3. pdf怎么插入页码方法介绍
  4. 实战:k8s之本地存储-2022.2.21
  5. 视频播放VideoView
  6. 解决ECSHOP在IPAD等平板电脑和智能手机的显示问题
  7. 微信扫码支付遇到的问题
  8. js 字符串截取方法总结(前端)
  9. 华为p8是android,有效利用华为P8的这些设置
  10. python keyshot_带你快速了解KeyShot 6中的新功能