我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method();

类在实现接口的时候必须重写抽象方法才可以

jdk8中新加的默认方法和静态方法是什么呢?

可以通俗理解:静态方法属于类,调用静态方法通过接口名曲调用它,默认方法在实现类中可以重写,可以不重写

;默认方法,在接口中定义,区别抽象方法,有方法体
public interface DefaultStaticInterface {
//普通方法,类实现接口必须重写它
abstract void Method(); //默认方法在类实现接口时候可以不重写,也可以重写
public default void defaultMethod() {
System.out.println("这是接口定义的默认方法,实现接口可以不重写他");
} ; //静态方法是属于接口的,调用它必须用接口调用
public static void staticMethod() {
System.out.println("这是接口的静态方法");
} ; }
//探索静态方法 默认方法是否可以被继承
interface ExtendInterface extends DefaultStaticInterface{
void speak();
} class Test implements DefaultStaticInterface {
@Override
public void Method() {
System.out.println("重写了类中定义的抽象方法Method");
} @Override
public void defaultMethod() {
System.out.println("这里选择性的重写了了接口中的默认方法defaultMethod()");
} //静态方法,通过接口定义
public static void main(String[] args) {
//静态方法的调用
DefaultStaticInterface.staticMethod();
Test test = new Test();
test.Method();
test.defaultMethod();
}
}
class Test01 implements ExtendInterface{
@Override
public void speak() {
System.out.println("重写speak方法");
} @Override
public void Method() {
System.out.println("重写父类中的抽象方法");
} @Override
public void defaultMethod() {
System.out.println("重写父类接口中的默认方法");
}
//可以知道,子类接口中的默认方法是可以继承的,但是静态方法始终是属于父类接口的,通过父类接口调用
public static void main(String[] args) {
Test01 test01=new Test01();
test01.Method();
test01.defaultMethod();
DefaultStaticInterface.staticMethod(); }
}

JDK8.0接口中的默认方法和静态方法的更多相关文章

  1. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

  2. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  3. 【Java8新特性】接口中的默认方法和静态方法,你都掌握了吗?

    写在前面 在Java8之前的版本中,接口中只能声明常量和抽象方法,接口的实现类中必须实现接口中所有的抽象方法.而在Java8中,接口中可以声明默认方法和静态方法,本文,我们就一起探讨下接口中的默认方法 ...

  4. Java8接口中的默认方法

    Java8新增特性,可以为接口中添加默认方法,实现这个接口的所有类都会继承这个方法,这样看起来,接口和类的界限就有点不明显了,同时也会带来多继承,菱形问题.这样设计的初衷是什么? 重所周知,java8 ...

  5. Java8新特性_接口中的默认方法

    默认方法由来猜想 1. Collection接口.Collections公共类.  同是操作集合,为啥要搞俩?没必要.在接口中搞一些默认实现,一个接口即搞定了. 2. Java8支持Lambda表达式 ...

  6. Java 8——接口中个的默认方法和静态方法

    在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...

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

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

  8. JDK8-lambda表达式以及接口可以定义默认方法

    一.Lambda表达式 1.Lamdba Lambda 允许把函数作为一个方法的参数,使用Lamdba可以让开发的代码更加简洁,但是易读性差,新人不了解Lamdba表达式或者代码功底有点差,不容易读懂 ...

  9. Java8新特性之四:接口默认方法和静态方法

    在JDK1.8以前,接口(interface)没有提供任何具体的实现,在<JAVA编程思想>中是这样描述的:"interface这个关键字产生了一个完全抽象的类,它根本就没有提供 ...

随机推荐

  1. UML图概述

    UML图概述 UML是一种分析设计语言,即一种建模语言.UML是由图形符号表达的建模语言,其结构主要包括视图.图.模型元素和通用机制四部分. UML包括5种视图,分别是用户视图.结构视图.行为视图.实 ...

  2. python 等频率切分数据

    小编最近入坑风控,在工作中需要对数据进行等频率切分,也就是将数据划分成几段,在每段中,数据的出现频率,出现次数是大致相同的,让数据集在每段上呈现出分布均匀的趋势. 小编先是想到df.describe ...

  3. hadoop hdfs 数据迁移到其他集群

    # hadoop fs -cat /srclist Warning: $HADOOP_HOME is deprecated. hdfs://sht-sgmhadoopcm-01:9011/jdk-6u ...

  4. ERP新人防坑指南

    本文作为初入ERP行业的新人的防坑指南,讲解了一些常见犯的错,这样也少走一些弯路,如果你是老鸟,请绕过 :-) 本文关联的代码使用kotlin编写,请自行转换为c#.java等你熟悉的语言,表述的坑在 ...

  5. vue-cli(vue脚手架) 简单使用

    1.vue-cli 作用 vue-cli作为vue的脚手架,可以帮助我们在实际开发中自动生成vue.js的模板工程. 2.vue-cli 使用 a. 安装全局vue-cli npm install v ...

  6. Linux上文件恢复工具

    文件恢复工具extundelete官网:http://extundelete.sourceforge.net/ 使用方法,在页面里找到download,下载源码安装包:extundelete-0.2. ...

  7. redis数据库-VUE创建项目

    redis数据库 ''' 关系型数据库: mysql, oracle 非关系型数据库(nosql): redis,mongodb (没有表的概念) key-value mongodb: json 数据 ...

  8. vue做的第二个app

    用vue做应用最好的还是组件的复用上次做饿了吗的app封装了一个评分star的组件只要引入组件传入size大小和score分数就行了,这次做豆瓣直接就就用上了不用重复写代码.不过vue做单页应用全部挂 ...

  9. pyCharm-激活码(2018)

    最近使用pycharm的时候,用的是很久以前的激活地址 于是网上到处寻找最新地址,然而 网上之前分享的激活地址已经多半过期, 于是找朋友帮忙,终于找到一个可用的了 1.选择 Activate new ...

  10. FORTH 虚拟机内部结构

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...