使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;  //全局常量
[public] [abstract] 方法;  //抽象方法
}

修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。
方法:接口中的方法只有定义而没有被实现。

public abstract void eat();  //接口中只能定义抽象方法

void eat(); //接口中定义的方法没有声明修饰符,默认为 public abstract

public static final int NUM = 10; //在接口中定义一个常量

int NUM = 10; //常量

在JDK1.8后的新特性,可以被所有实现类

//接口之间可以多继承(注意:类是只能单继承)

//具体类实现接口必须实现接口的所有方法

接口的概念

1.接口是一组行为的规范、定义,没有实现(JDK1.8默认方法)

2.使用接口,可以让我们的程序更加利于变化

3.接口是面向对象编程体系中的思想精髓之一

4.面向对象设计法则:基于接口编程

接口的使用规则:

(1)定义一个接口,使用interface关键字

(2)在一个接口中,只能定义常量、抽象方法,JDK1.8后可以定义默认的实现方法

(3)接口可以继承多个接口,extends xxx,xxx

(4)一个具体类实现接口使用inplements关键字

(5)一个类可以实现多个接口

(6)抽象实现接口可以不实现接口的方法

(7)在接口中定义的方法没有声明访问修饰符,默认为public

(8)接口不能有构造方法

(9)接口不能被实例化

面向对象设计原则

(1)对修改关闭,对扩展开放

(2)面向接口编程

接口概述:

  • 狭义的角度讲就是指java中的interface
  • 广义的角度讲对外提供规则的都是接口

接口特点:

  • 接口用关键字interface表示 interface 接口名{}
  • 类实现接口用implement表示 class 类名 implement 接口名{}
  • 接口不能实例化 按照多态的方式来实例化
  • 接口的子类 可以是抽象类(意义不大),可以是具体类(要重写接口中的所有抽象方法)

一个类不写继承任何类,默认继承object类

接口的成员特点:

成员变量:只能是常量,并且是静态的并公共的,默认修饰符:public static final(不写系统默认加上,没有顺序之分)

构造方法:接口没有构造方法

成员方法:只能是抽象方法 默认修饰符: public abstract(默认加上)

类与类,类与接口,接口与接口的关系:

  • 类与类 只能单继承,可以多层继承
  • 类与接口
    • 实现关系,可以单实现,也可以多实现
    • 并且还可以在继承一个类的同时实现多个接口
  • 接口与接口
    • 可以单继承,也可以多继承

抽象类和接口的区别

成员区别:

  • 抽象类

    • 成员变量:可以变量,也可以常量
    • 构造方法:有
    • 成员方法:可以抽象,也可以非抽象
  • 接口
    • 成员变量:只可以常量
    • 成员方法:只可以抽象

关系区别:

  • 类与类 继承,单继承
  • 类与接口 单实现,多实现、
  • 接口与接口 单继承,多继承

设计理念区别:

  • 抽象类 被继承的体现是:“is a”的关系。抽象类中定义的是该继承体系的共性功能
  • 接口 被实现体现的是:“like a”的关系。接口中定义的是该继承体系的扩展功能

java中接口的定义的更多相关文章

  1. java中接口的定义和接口的实现

    1.接口的定义 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interfa ...

  2. java中接口的定义与实现

    1.定义接口     使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成.定义接口的基本格式例如以下: [修饰符] in ...

  3. 转载 - java中接口的向上转型。和多态性

    发现一篇对接口总结很精简的文章 1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样, 向上转型了,可以很好的利用接口,可 ...

  4. Java中接口和抽象类的比較

    Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...

  5. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  6. Java 中接口和抽象类的 7 大区别!

    本文已收录<Java常见面试题>:https://gitee.com/mydb/interview ​ Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象.封装.继承和 ...

  7. Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题

    在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...

  8. Java中方法的定义与使用

    Java中方法的定义与使用 1.方法的定义: 方法是一段可以被重复调用的代码块. 方法的声明: public static 方法返回值 方法名([参数类型 变量--]){ 方法代码体: return ...

  9. 关于java中接口定义常量和类定义常量的区别

    /** * * @author YZJ * @Description java中定义常量的最佳方法 */ public final class Contants{ /** * @Description ...

随机推荐

  1. APScheduler定时任务

    python模块(APScheduler定时任务)   APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时 ...

  2. Django 项目拆分配置文件settings.py

    使用Django命令生成一个项目的基本结构时, 配置信息默认保存在和项目目录同名的目录下的settings.py文件里, 对于一个项目而言, 这样往往是不合适的, 在实际的开发中,需要将配置文件拆分为 ...

  3. iphone 自学常用网址

    https://www.gitbook.com/book/numbbbbb/-the-swift-programming-language-/details https://github.com/ip ...

  4. CUDA安装

    1.CUDA是什么? CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台. 随着显卡的发展,GPU越来越强大,而且GPU为显示图像做 ...

  5. Python基础部分的疑惑解析(2)

    变量: 变量名由 字母.数字.下划线构成,数字不能做为开头 不能用关键字:另外一些内置的方法也别用 推荐使用下划线命名间两个单词user_id 变量在最后底层处理的时候没什么意义,但是在命名的时候有利 ...

  6. Codeforces Round #517

    传送门 A. Cram Time 你有一本书,阅读第\(i\)页需要花费\(i\)的时间.你第一天有\(a\)的时间,第二天有\(b\)的时间,问你的总阅读页数的最大值. Input: 一行包含\(2 ...

  7. 20190416 OSX系统使用VMware Fusion安装CentOS7踩的那些坑

    一.创建虚拟机 (1)在虚拟机资源库中点击[+添加]按钮,选择“新建...”选项 (2)选择创建自定义虚拟机 (3)选择系统类型为CentOS (4)选择虚拟磁盘类型 (5)选择虚拟机存储位置:点击[ ...

  8. Service层异常处理

    1.在service方法里面如果对异常进行了捕获的话,该事务是不会进行回滚的 * 默认spring事务只在发生未被捕获的 runtime excetpion()时才回滚. * * spring aop ...

  9. 从源码层面解析SpringIOC容器

    Spring IOC容器继承关系图 MessageSource支持消息国际化.ResouceLoader资源加载.BeanFactory创建Bean.ApplicationEventPublisher ...

  10. 一、OPENERP 的一个demo

    安装好OPENERP后,使用 ps -aux|grep openerp 从输出的内容可以得到OPENERP的安装信息, /usr/bin/python /usr/bin/openerp-server ...