如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另一种方法来定义,即接口~

在定义接口时,需要用interface关键字来声明,具体实例如code1

接口的定义格式:

interface 接口名{

}

code1

interface Animal{
int num = 1 ; //定义全局变量
void breathe(); //定义抽象方法
void run();
}

上面代码中,Animal就是一个接口。在code1中 会发现抽象方法breathe()并没有使用abstract关键字来修饰,这是因为接口定义的方法和变量都包含一些默认修饰符。

接口中定义的方法默认使用“public abstract”来修饰 即是抽象方法。

接口中定义的变量默认使用“public static final”来修饰 即是全局常量。

实现接口的格式:

class  类名 implements 接口名{

}

code2(实现A接口)

package day09;
interface A{
//成员变量
public static final int num=1; //成员函数
public void print();
}
public class Demo7 {
//实现接口中的方法
public void print(){
System.out.println("这个是接口中的print方法...");
}
public static void main(String[] args){
Demo7 d = new Demo7();
d.print();
}
}

code2运行结果:

接口的特点:

1. 类实现接口可以通过implements实现,实现接口的时候必须把接口中的所有方法实现,一个类可以实现多个接口。

2. 接口中定义的所有的属性默认是public static final的,即静态常量既然是常量,那么定义的时候必须赋值。

3. 接口中定义的方法不能有方法体。接口中定义的方法默认添加public abstract

4. 有抽象函数的不一定是抽象类,也可以是接口类。

5. 由于接口中的方法默认都是抽象的,所以不能被实例化。

6. 对于接口而言,可以使用子类来实现接口中未被实现的功能函数。

7. 如果实现类中要访问接口中的成员,不能使用super关键字。因为两者之间没有显示的继承关系,况且接口中的成员成员属性是静态的。可以使用接口名直接访问。

8. 接口没有构造方法。

9.当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否者需要实现接口中的所有方法。

10.一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。具体如code3

11.一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。具体如code4

12.一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字前。具体如code5

接口(interface):usb接口,主要是使用来拓展笔记本的功能,那么在java中的接口主要是使用来拓展定义类的功能,可以弥补java中单继承的缺点。

code3(一个类实现多个接口)

interface Run{
//code……
}
interface Fly{
//code……
}
class Bird implements Run,Fly{
//code……
}

code4(接口继承多个接口)

interface A{
//code……
}
interface B{
//code……
}
interface C extends A,B{
//code……
}

code5(extend关键字必须位于implements关键字之前)

class A extends B implements C{ //先继承 再实现
//code……
}

接口的作用:
1. 程序的解耦。  (低耦合)
2. 定义约束规范。
3. 拓展功能。

接口的用途不但多,而且是非常必要。这就是为什么我们为什么老是提“面向接口编程”的概念。

你现在对其理解不深没有关系,只是在实际中先用。等积累到一定程度就知道接口的好处了。

为什么要用接口 :用于处理多变的情况。

接口在实际开发过程中最大好处是,你可以按照设计,先把接口写好,然后分配大伙干活的时候,告诉a们去用写好的接口去实现他们的具体功能,而告诉b们,去写那些已经写好但是没有具体的代码的接口,这样可以提高工作效率。并且底层和应用也通过接口做了一个很明显的分层。

接口的定义格式:

interface 接口名{

}

JAVA_SE基础——47.接口的更多相关文章

  1. JAVA_SE基础——50.接口关系下的多态

    接口关系下的多态和继承关系下的多态 相差无几,应该更简单些~ 多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象. 实现关系下的多态: 接口  变量  = ...

  2. JAVA_SE基础——6.标识符&关键字

    学会写helloworld之后,  我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...

  3. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

  4. [.net 面向对象编程基础] (16) 接口

    [.net 面向对象编程基础] (16) 接口 关于“接口”一词,跟我们平常看到的电脑的硬件“接口”意义上是差不多的.拿一台电脑来说,我们从外面,可以看到他的USB接口,COM接口等,那么这些接口的目 ...

  5. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

  6. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  7. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  8. JAVA_SE基础——8.基本数据类型

    基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...

  9. JAVA_SE基础——7.常量&变量

    上一篇,我讲了标识符&关键字    这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...

随机推荐

  1. mac 配置虚拟主机

    http://www.upwqy.com/details/4.html 编辑httpd.conf文件,输入命令: vim /etc/apache2/httpd.conf 编辑httpd-vhosts. ...

  2. 如何在已安装Python条件下,安装Anaconda,,并将原有Python添加到Anaconda中

    在安装Anaconda之前,有的已经安装过一个Python版本了,但是又不想删除这个Python版本,该怎么办呢? 概括:轻松两步--在系统环境变量中找到对应之前安装Python的路径并删除:直接将你 ...

  3. 【Unity与23种设计模式】原型模式(Prototype)

    GoF中定义: "使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成." Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其 ...

  4. spring Boot+spring Cloud实现微服务详细教程第二篇

    上一篇文章已经说明了一下,关于spring boot创建maven项目的简单步骤,相信很多熟悉Maven+Eclipse作为开发常用工具的朋友们都一目了然,这篇文章主要讲解一下,构建spring bo ...

  5. Maven-02: 依赖

    其实一个依赖声明可以包含如下的一些元素: groupId,artifactId,version:依赖的基本坐标. type:依赖的类型,对应于项目坐标定义的packaging.大多数情况下,该元素不必 ...

  6. 笔记:MyBatis 动态SQL

    有时候,静态的SQL语句并不能满足应用程序的需求.我们可以根据一些条件,来动态地构建SQL语句.例如,在Web应用程序中,有可能有一些搜索界面,需要输入一个或多个选项,然后根据这些已选择的条件去执行检 ...

  7. Kotlin——从无到有系列之中级篇(四):面向对象的特征与类(class)继承详解

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 在前面的章节中,详 ...

  8. 【Python】 基于秘钥的对称加密

    [Crypto] 关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash.但是还缺少一种明明场景很简单的解决方案,就是把利用 ...

  9. http,socks4,socks5代理的区别

    HTTP代理 能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80.8080.3128等: SOCKS代理 SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心 ...

  10. 网络通信 --> CRC校验

    CRC校验 一.什么是CRC校验     循环校验码(Jyclic Redundancy Check,简称CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意 ...