【Java8新特性】- 接口中默认方法修饰为普通方法

时间:2022-10-04 19:09:12

????生命不息,写作不止
???? 继续踏上学习之路,学之分享笔记
???? 总有一天我也能像各位大佬一样
???? 一个有梦有戏的人 @怒放吧德德
????分享学习心得,欢迎指正,大家一起学习成长!

【Java8新特性】- 接口中默认方法修饰为普通方法

接口中默认方法修饰为普通方法

在java8之前,接口类可以定义变量和方法,变量必须要public、static、final修饰,方法需要public、abstract修饰。方法由子类来实现。接口方法默认是public,如果多加了public就会显示冗余的public。
【Java8新特性】- 接口中默认方法修饰为普通方法

在jdk8之后,java就能够通过default和static修饰,直接编写方法体,无需子类去实现。当我们直接在接口类中编写带方法体的方法时,idea就会提示接口抽象方法不能有方法体。
【Java8新特性】- 接口中默认方法修饰为普通方法

default、static修饰

当我们使用default修饰的时候,idea就会提示不支持此方法。
【Java8新特性】- 接口中默认方法修饰为普通方法

我们就将其设置为java8级别,之后就能用了。
【Java8新特性】- 接口中默认方法修饰为普通方法

这样就都能用了

案例代码

package com.jdk8.demo.method;

/**
 * @author: lyd
 * @description: 声明接口
 * @Date: 2022/10/4
 */
public interface InterfaceMethod {
    void PubMethod();

    default void DefaultMethod() {
        System.out.println("使用default修饰");
    }
    
    static void StaticMethod() {
        System.out.println("使用static修饰");
    }
}

在实现类中,一定需要实现的是没有方法体的,修饰了static是不可以子类去实现的。
这里就实现未实现的方法。

package com.jdk8.demo.method.impl;

import com.jdk8.demo.method.InterfaceMethod;

/**
 * @author: lyd
 * @description: 实现类
 * @Date: 2022/10/4
 */
public class InterfaceMethodImpl implements InterfaceMethod {
    @Override
    public void PubMethod() {
        System.out.println("public方法");
    }
}

测试

package com.jdk8.demo.method;

import com.jdk8.demo.method.impl.InterfaceMethodImpl;

/**
 * @author: lyd
 * @description: 测试
 * @Date: 2022/10/4
 */
public class Itest {
    public static void main(String[] args) {
        InterfaceMethod interfaceMethod = new InterfaceMethodImpl();
        interfaceMethod.PubMethod();
        interfaceMethod.DefaultMethod();
        InterfaceMethod.StaticMethod();
    }
}

运行结果
【Java8新特性】- 接口中默认方法修饰为普通方法

感谢观看!