JDK8 直接定义接口中静态方法

JDK8前,接口只能是抽象方法。

但是在JDK8中,静态方法是可以直接定义方法体,可以直接用接口名调用。实现类和实现是不可以调用的

一、直接调用接口的静态方法

二、实现接口的子类来调用接口的静态方法

可以定义非静态方法,在返回值前+default,然后其子类的实现类中进行调用,子类中也可以重写

三、如果同时实现两个接口,接口中定义了一样的默认方法,必须重写,不然会报错

原文地址:https://www.cnblogs.com/ggwow/p/8185040.html

时间: 2025-01-10 10:15:46

JDK8 直接定义接口中静态方法的相关文章

koa params 关于koa定义接口中参数配置的小白入门

我们在前端开发中会使用到后端提供的接口, 例如这样的接口: http://www.x.com/addUser?name=Arvo&age=24 那么在express或者koa中,我们想自己实现一个这样带参数的接口将如何实现, 看下面代码: var router = require('koa-router'); var querystring = require('querystring'); app.use(router(app)); app.get('/addUser', function *

接口中方法的使用

抽象方法的使用 接口中的抽象方法注意就是供子类(实现类)重写的 注意: 接口的实现类如果是普通类,那么必须重写接口中的所有抽象方法 接口的实现类如果是抽象类,那么可以不用重写接口中的抽象方法 必须全部实现,代码如下: 定义接口: public interface LiveAble { // 定义抽象方法 public abstract void eat(); public abstract void sleep(); } 定义实现类: public class Animal implements

JDK8.0接口中的默认方法和静态方法

我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method(); 类在实现接口的时候必须重写抽象方法才可以 jdk8中新加的默认方法和静态方法是什么呢? 可以通俗理解:静态方法属于类,调用静态方法通过接口名曲调用它,默认方法在实现类中可以重写,可以不重写 ;默认方法,在接口中定义,区别抽象方法,有方法体 public interface DefaultStaticInterface { //普通方法,类实现接口必须重写它

jdk1.8新特性 : 接口中可以有普通方法(非静态方法)和静态方法 , 颠覆了之前我的理解 : 接口中只能有共有常量和抽象方法的概念,后面必须要加一句jdk1.7和1..7之前

看到jdk某些接口中存在default方法,于是... http://shaomeng95.iteye.com/blog/998820    为什么接口只能是公有常量? public interface Jdk8新特性 { public static final String AA = "hhe"; default void test(){ System.out.println("哈哈"); } public static void hehe(){ System.o

什么?接口中方法可以不是抽象的「JDK8接口新语法的深度思考」

先赞后看,养成习惯 文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址Lu_JavaNodes,包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦. 前言 在传统的接口语法中,接口中只可以有抽象方法.在是在实际的使用中,我们往往会需要用到很多和接口相关的功能(方法),这些功能会单独的拿出开放在工具类中. 工具类:类中所有的方法都是静态的 例如:Collection 和 Collocations,Collection 是一个集合接口,而我们需要很多集合相关

java中接口中成员的定义

java中的接口的作用是提供编程框架,它作为统一的规范让其他类进行扩展,是java中非常优秀的设计. 这娃用以下代码总结了java中接口可以定义的成员以及它们默认被修饰的关键字: //外部接口的访问修饰符只能是public或默认修饰符 ,并且它的成员只能用public访问修饰符修饰, 接口不能用final修饰 public interface A { //成员变量,默认用public static final 修饰 String name="ahei"; //成员方法,默认用publi

Java中抽象类和接口中均不能定义静态的抽象方法

1.Java抽象类中不能有静态的抽象方法. 抽象类是不能实例化的,即不能被分配内存:而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存.所以抽象类中不能有静态的抽象方法. 定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写. 2.接口中不能有静态的抽象方法 接口中的方法也只能是 public abstract修饰的,不能加上static.接口是不能实例化的,即不能被分配内存,而static修饰的方法

教你在Java接口中定义方法

基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClient,其代码结构如下: import java.time.*; public interface TimeClient { void setTime(int hour, int minute, int second); void setDate(int day, int month, int yea

java8之lambda表达式(接口中的静态方法)

在Java8中,你可以为接口添加静态方法.从技术角度来说,这是完全合法的.只是它看起来违反了接口作为一个抽象定义的理念. 至今为止, 我们经常在相互一起使用的类中使用静态方法.你可以在标准库中找到像Collection/Collections或者Path/Paths这样成对的接口和类.以Paths类为例,它只有一些工厂方法.你可以通过一组字符串来构造一个路径,例如Paths.get("jdk1.8.0","jre","bin").在java8中,