1.小结(注意):

  1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰

  2.接口中,没有构造方法,不能创建对象

  3.接口中,没有静态代码块

  4.可以继承,可以重写,二选一,但是只能通过实现类的对象来调用

  5.接口可以多实现

  6.默认方法和静态方法JDK8版本才出的.

  7.接口中抽象方法使用abstract关键字修饰,可以省略,没有方法体,该方法供子类实现使用.

  8.静态与.class文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用

  9. 一个接口能继承另外一个或者多个接口,这和类之间的继承比较相似,接口的继承使用extends关键字,子接口继承父接口的方法.如果父接口中的默认方法有重名的,那么子接口需要重写一次

2.接口

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

  接口的定义,它与定义类方式相似,但是使用interface关键字.它也会被编译成.class文件,但一定要明确它不是类,而是另外一种数据类型.

  引用数据类型:数组,类,接口

  接口的使用,他不能创建对象,但是可以被实现(implements,类似于被继承),一个实现接口的类,(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类

  定义格式:

public interface Inter {
//抽象方法,默认省略public abstract
public abstract void method1();
//默认方法
public default void method2(){
//方法体
}
//静态方法
public static void method3(){
//方法体
}
}

  接口可以多实现

3.抽象方法

  抽象方法使用abstract关键字修饰,可以省略,没有方法体,该方法供子类实现使用.

4.默认方法

  使用default修饰,不可省略,供子类调用或者子类重写

  可以继承,可以重写,二选一,但是只能通过实现类的对象来调用

  接口中,有多个默认方法时,实现类都可继承使用,如果继承方法有重名的,必须重写一次

5.静态方法

  使用static修饰,供接口直接调用

  静态与.class文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用

6.实现:

  类与接口的关系为实现关系,即类实现接口,该类可以成为接口的实现类,也可以成为接口的子类,实现的动作类似继承,格式相仿,只是关键字不同,实现使用implements关键字

  非抽象子类实现接口:

    1.   必须重写接口中的所有的抽象方法,
    2.   继承了接口的默认方法,即可以直接调用,也可以重写

  接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法

7.优先级问题:

  当一个类,既继承了一个父类,又实现多个接口,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法

8.接口的多继承:

  一个接口能继承另外一个或者多个接口,这和类之间的继承比较相似,接口的继承使用extends关键字,子接口继承父接口的方法.如果父接口中的默认方法有重名的,那么子接口需要重写一次

9.其他:

  1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰

  2.接口中,没有构造方法,不能创建对象

  3.接口中,没有静态代码块

JAVA_接口_默认方法&静态方法的更多相关文章

  1. 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选

    常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...

  2. 常用的函数式接口_Predicate接口_默认方法and和Predicate接口练习_集合接口筛选

    默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Preadicate条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...

  3. jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...

  4. java8新特性:接口的默认方法与静态方法

    接口中一共可以定义三种方法: 1.抽象方法,也就是需要实现者必须实现的方法,最常见的那种 2.默认方法,不需要实现者实现 3.静态方法,不需要实现者实现 默认方法: 允许在已有的接口中添加新方法,而同 ...

  5. java1.8新特性(一)接口的默认方法

    一 简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现. 在JDK1.8中打破了这样的认识,接口中的方法可以有 ...

  6. JDK1.8新特性(一): 接口的默认方法default

    前言 今天在学习mysql分区优化时,发现一个博客专家大神,对其发布的文章简单学习一下: 一:简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的 ...

  7. Java8新特性——接口的默认方法和类方法

    Java8新增了接口的默认方法和类方法: 以前,接口里的方法要求全部是抽象方法,java8以后允许在接口里定义默认方法和类方法: 不同的是: 默认方法可以通过实现接口的类实例化的对象来调用,而类方法只 ...

  8. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 一文带你认识Java8中接口的默认方法

    Java8是Oracle于2014年3月发布的一个重要版本,其API在现存的接口上引入了非常多的新方法. 例如,Java8的List接口新增了sort方法.在Java8之前,则每个实现了List接口的 ...

随机推荐

  1. 浅谈微信小程序一二

    1.生命周期 1.onLoad():页面加载时触发,一个页面只加载一次. 2.onShow():页面显示切换的时候触发 3.onReady():页面初次渲染完成时触发.一个页面只会调用一次,代表页面已 ...

  2. PyCharm下载及使用

    PyCharm教育版是一款能够对你编写Python程序的工作有所帮助的免费编译器. PyCharm-community下载链接:https://pan.baidu.com/s/1Hwd_TOVA3en ...

  3. layui table分页 page为false时,limit问题

    问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...

  4. [error] - Build path is incomplete. Cannot find class file for org/aspectj/weaver/refl

    将本地仓库中mybatis 的jar 包删除,然后在eclipse 中右键工程选中 Maven->upgrade ..

  5. Nuget私有服务搭建实战

    最近更新了Nuget私有服务器的版本,之前是2.8.5,现在是2.11.3. Nuget服务器的搭建,这里有篇很详细的文章,跟着弄就好了: https://docs.microsoft.com/en- ...

  6. C++或C#调用外部exe的分析

    假如有个外部程序名为A.exe,放在目录E:\temp\下,然后我们用C++或者C#写一个程序调用这个A.exe的话(假设这个调用者所在的路径在D:\invoke),通常会采用下面的代码: // C# ...

  7. 一篇年薪60万的JVM性能调优文章

    JVM 调优概述 性能定义 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标. 延迟 - 其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集 ...

  8. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  9. [Swift]LeetCode112. 路径总和 | Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  10. [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings

    Given a string, we can "shift" each of its letter to its successive letter, for example: & ...