目录

1.6.1接口概述

1.6.1.1为什么引入接口

1.6.1.1接口定义

1.6.2接口定义格式

1.6.3接口的使用

1.6.4接口成员的特点

1.6.4.1 成员变量

1.6.4.2 成员方法

1.6.4.3 构造方法

1.6.5 抽象类

1.6.5.1 抽象方法与抽象类

1.6.5.2 抽象类格式

1.6.6 类和接口的关系

1.6.7 抽象类和接口的区别

1.6.8 JDK8开始接口新增的方法


1.6.1接口概述

1.6.1.1为什么引入接口

狗:吃,睡,游泳

青蛙:吃,睡,游泳

兔子,吃,睡

如果父类的动物定义吃,睡,游泳,兔子继承动物,就代表兔子也可以调用游泳,这个显然不对,因为兔子根本不能游泳。为了解决这类问题,引入了接口,可以理解:接口是一种行为(规则)

1.6.1.1接口定义

接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法(功能),包含抽象方法 (JDK7及以前) , 默认方法和静态方法(JDK8)私有方法(JDK9)。

1.6.2接口定义格式

接口用关键字interface修饰

public interface 接口名 {

}

1.6.3接口的使用

接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示

public class 类名 implements 接口名 {

}

注意: 接口的实现类必须重写接口中的所有的抽象方法,要么该类是一个抽象类

1.6.4接口成员的特点

1.6.4.1 成员变量

只能是常量,默认修饰符:public static final

1.6.4.2 成员方法

只能是抽象方法,默认修饰符:public abstract

1.6.4.3 构造方法

没有,因为接口主要是扩展功能的,而没有具体存在

1.6.5 抽象类

1.6.5.1 抽象方法与抽象类

抽象方法

  • 将共性的行为(方法)抽取到父类之后,由于每一个子类的执行的内容时不一样,所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法

抽象类

  • 如果一个类中存在抽象方法,那么该类就必须声明为抽象类

1.6.5.2 抽象类格式

格式

  • 抽象方法格式:

Public abstract 返回值类型 方法名(参数列表)

  • 抽象类定义格式:

Public abstract class 类名{}

// 先定义抽象类,里面有一个抽象方法
public abstract class Area{// 定义抽象方法abstract void area();
}
// A类继承抽象类
public class A extends Area{@Overridevoid area() {System.out.println("我是A");}
}}

注意事项

  • 抽象类不能实例化

  • 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

  • 可以有构造方法

  • 抽象类的子类

    • 要么重写抽象类中的所有的抽象方法

    • 要么是抽象类(但是这个还是要创建一个子子类继承这个抽象子类)

1.6.6 类和接口的关系

  • 类与类的关系

    继承关系,只能单继承,但是可以多层继承

  • 类与接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  • 接口与接口的关系

    继承关系,可以单继承,也可以多继承

1.6.7 抽象类和接口的区别

  • 成员区别

    • 抽象类

      变量,常量;有构造方法;有抽象方法,也有非抽象方法

    • 接口

      常量;抽象方法

  • 关系区别

    • 类与类

      继承,单继承

    • 类与接口

      实现,可以单实现,也可以多实现

    • 接口与接口

      继承,单继承,多继承

  • 设计理念区别

    • 抽象类

      为了继承而来,让子类强制重写父类中的抽象方法

    • 接口

      对行为抽象,主要是行为

1.6.8 JDK8开始接口新增的方法

  • JDK7以前:接口中只能定义抽象方法

  • JDK8新特性:接口中可以定义有方法体的方法(默认,静态)

  • JDK9新特性:接口可以定义私有方法

简单了解一下,后面会详细讲解。

1.6Java-接口、抽象类相关推荐

  1. C++中的接口(抽象类)

    1.Cpp中的接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现.接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念.如果类中至少有一 ...

  2. C++ 接口(抽象类)

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105020800 接 ...

  3. jdk8 接口抽象类区别_JDK 8时代的抽象类与接口

    jdk8 接口抽象类区别 在新的Java 8日期和时间API:Stephen Colebourne的访谈中 , Stephen Colebourne告诉Hartmut Schlosser :" ...

  4. 重写,重载,抽象类,接口,抽象类和接口区别

    1.多态之重写,重载     重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数.类型都完全一致时,就称子类中的这个方法重写了父类中的方法.     new,virtual,ov ...

  5. 接口抽象类继承父类和子类

    1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...

  6. java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...

    不知不觉中,千锋重庆学习Java已经半个月了,同学们感觉受益匪浅.有一个同学本来是软件编程专业基础却是意外的差,什么标识符.变量的命名规则.方法的定义.数组.面向对象的封装.继承.多态,还有接口.抽象 ...

  7. java抽象机制_Java很好学:接口+抽象类+事件监听机制

    接口?抽象类? 首先知道知道下接口.抽象类的概念 接口:只含有常量和抽象方法(只有方法名和参数不含方法体的方法) 抽象类:可以定义常量和抽象方法(和接口一样),还可以定义变量和普通方法和构造方法(和一 ...

  8. PHP对象和接口抽象类注意事项

    Php 的对象的实现: 注:对象名称最好以对象名.class.php来进行命名. 1. 对于静态类的成员不能使用$this->这个来调用其静态类的成员和函数,应该使用self::成员或者方法来进 ...

  9. java类的继承,接口,抽象类总结

    1. 类的继承 类和类之间可以实现继承关系,即从一个类中继承它的部分属性和部分方法,避免重写代码,提高了代码的重用性.比如武侠小说,言情小说,玄幻小说都属于小说,拥有小说所拥有的属性.继承的格式是pu ...

  10. 12.面向对象(继承/super/接口/抽象类)

    面向对象 继承与派生 继承 继承顺序 继承原理 子类调用父类的方法(super) 组合 接口 接口的概念: 接口的概念解释和使用: python中的接口: 抽象类 面向对象 继承与派生 继承 什么是继 ...

最新文章

  1. 《玩转.NET Micro Framework 移植-基于STM32F10x处理器》--微软中国.NET Micro Framework项目组工程师所作之序...
  2. 复习Javascript专题(二):闭包,内存,以及垃圾回收机制
  3. Windows scp传输文件给Linux
  4. C# - 简单介绍TaskScheduler
  5. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
  6. 巧用 TypeScript Literal Types 模拟枚举类型
  7. 程序员三年的门槛该如何跨过去?
  8. java 解析标记语言_Java XML可扩展标记语言(eXtensible Markup Language)
  9. java blueprint_blueprint(蓝本/蓝图)学习笔记
  10. 使用nginx负载均衡的webservice wsdl访问不到_谁说前端不用懂,Nginx 反向代理与负载均衡(超实用)...
  11. es6学习 http://es6.ruanyifeng.com/
  12. System Center 2012各组件介绍
  13. 使用Angularjs的ng-cloak指令避免页面乱码
  14. 【基础】华为设备浮动路由配置实战
  15. 前端文档汇总(觉得对您有用的话,别忘了给点个赞哦 ^_^ !) 1
  16. 为什么要编写轻量级的View Controller??
  17. 自己写好记的Oracle的 Group By 、 Group By Rollup和Group By Cube基础
  18. Linux CentOS 学习笔记
  19. 计算机英语朗读音频,新课标小学英语阅读精选(MP3+中英字幕) 第72期:电脑
  20. cesium 模型实体平移

热门文章

  1. 《Microduino实战》——1.3 开源软件
  2. 浅谈“全栈工程师需要掌握哪些技能”
  3. nginx 配置优化的几个参数
  4. 专访刘秋杉:我的人生是一场没有边界的无限游戏
  5. 怎么编写提醒人结账的短信息_我如何在短短8个月的时间里从编写第一行代码到获得$ 226K的工作机会...
  6. 面试中问的话题Spring工作原理
  7. LeetCode代码刷题(17~24)
  8. redis设置密码并修改查看的几种方式
  9. php输入框里的提示文字,input标签输入框带提示文字方法
  10. python_path