接口中的默认方法与静态方法

接口中的默认方法

Java 8中允许接口中包含具有具体实现的方法,该方法称为 “默认方法” ,默认方法使用** default 关键字修饰**。

例如:

image.png

接口默认方法的”类优先”原则

若一个接口中定义了一个默认方法,而另外一个父类或接口中 又定义了一个同名的方法时

  • 选择父类中的方法
    • 如果一个父类提供了具体的实现,那么 接口中具有相同名称和参数的默认方法会被忽略。
  • 接口冲突。
    • 如果一个父接口提供一个默认方法,而另一个接 口也提供了一个具有相同名称和参数列表的方法(不管方法 是否是默认方法),那么必须覆盖该方法来解决冲突
image.png

接口中的静态方法

Java8 中,接口中允许添加静态方法。

例如:

image.png

代码演示

默认方法
package com.www.java8.inter2;

/**
 * 接口中的默认方法
 * <p>
 *
 * @author Www
 * <p>
 * 邮箱 483223455@qq.com
 * <p>
 * 时间: 2022/8/13  15:58  星期六
 * <p>
 */
public interface MyFun {
    /**
     * 默认方法
     *
     * @return
     */
    default String getName() {
        return "www";
    }
}

静态方法

package com.www.java8.inter2;

/**
 * <p>
 *
 * @author Www
 * <p>
 * 邮箱: 483223455@qq.com
 * <p>
 * 创建时间: 2022/8/13  16:13  星期六
 * <p>
 */
public interface MyInterface {
    /**
     * 默认方法
     *
     * @return
     */
    default String getName() {
        return "MyInterface";
    }
    
    /**
     * 静态方法
     */
    static void show(){
        System.out.println(" MyInterface.show()");
    }
}

package com.www.java8.inter2.impl;

import com.www.java8.inter2.MyFun;
import com.www.java8.inter2.MyInterface;

/**
 * <p>
 *
 * @author Www
 * <p>
 * 邮箱: 483223455@qq.com
 * <p>
 * 创建时间: 2022/8/13  16:03  星期六
 * <p>
 */
public class SubClass/* extends MyClass */implements MyFun , MyInterface {
    
    /**
     * 默认方法 : 可以拥有方法体
     *
     * @return
     */
    @Override
    public String getName() {
        return MyInterface.super.getName();
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容