我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(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. 使用session统计在线人数

    效果图如下 这里是Chrome浏览器新登录一个用户 代码展示 package com.test.Util; import java.util.ArrayList; import javax.servl ...

  2. nameode启动过程

    namenode在内存和磁盘中都保存了fsimage和edits文件 内存中保证hdfs文件系统的访问效率,磁盘中保证hdfs文件系统的安全性 namenode的文件组成: fsimage文件:保存文 ...

  3. python_内置函数

    #内置函数 #1.abs 获取绝对值 # abs(-10) # --->10 # # abs(10) # --->10 # # abs(0) # --->0 #2.all() 参数为 ...

  4. windows系统下安装rabbitmq教程

    1.简介 安装rabbitmq需要下载软件Erlang语言开发包和RabbitMQ文件包.文件最新下载地址如下: Erlang: https://www.erlang.org/ RabbitMQ: h ...

  5. 一、Git简介

    由于工作需要,代码版本控制工具由SVN换为了Git.Git对于我来说,很陌生,不清楚其工作原理,所以查询了一些资料,将自己所得知的内容来汇总一下,梳理一下这方面的知识,同时也给其他想了解Git的童鞋们 ...

  6. fflush 和 fsync 的区别

    int fflush(FILE *stream);If stream points to an output stream or an update stream in which the most ...

  7. 使用线程操作刷新Winform界面

    主窗体中添加代码 public FrmMain() { InitializeComponent(); System.Threading.Thread thread = new System.Threa ...

  8. Linux c codeblock的使用(一):新建一个工程

    (1)点击New->Project,出现如下图所示,然后再选择Console application,点击Go (2)点击Next (3)根据自己的需求选择特定的语言(前提是你的系统上有这个语言 ...

  9. python之路-----前端之css

    本篇内容 CSS 语法 css的四种引入方式 css选择器 css属性操作 Caution! 后台管理布局 css响应式布局 一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声 ...

  10. python修炼第六天

    越来越难了....现在啥也不想说了,撸起袖子干. 1 面向对象 先来个例子: 比如人狗大战需要有狗,人所以创建两个类别模子def Person(name,sex,hp,dps): dic = {&qu ...