zoukankan      html  css  js  c++  java
  • 类如何实现具有相同方法的两个接口

    问题:

    众所周知,Java中一个类可以同时实现多个接口,如果多个接口中有相同的抽象方法时,实现类实现的方法是哪个接口的??

    测试

    Interface1.java

    /**
     * @author liuyiyuan
     */
    public interface Interface2 {
        void method();
    
        default void method2(){
            System.out.println("Interface2的方法调用:");
            method();
        }
    }

    Interface2.java

    /**
     * @author liuyiyuan
     */
    public interface Interface1 {
        void method();
        //int method(); //不能通过编译
    
        default void method1(){
            System.out.println("Interface1的方法调用:");
            method();
        }
    }

    InterfaceImpl.java

    /**
     * @author liuyiyuan
     */
    public class InterfaceImpl implements Interface2, Interface1  {
        @Override
        public void method() {
            System.out.println("xxxxxxxxxxxxx");
        }
    
        public static void main(String[] args) {
            Interface1 anInterface = new InterfaceImpl();
            anInterface.method();
            anInterface.method1();
    
            Interface2 i2 = (Interface2) anInterface;
            i2.method();
            i2.method2();
        }
    }

    输出如下:

    结论

    • 实现了具有相同方法(名字相同、参数相同、返回类型相同)的多个接口时,这个方法实现是共用的
    • 具有相同方法时一定要重写,即使是default方法也要重写
    • 当方法参数不同时,方法之间为重载,互不影响
    • 当返回值不同时,会发生错误,不能编译
  • 相关阅读:
    校验身份证号、邮箱、手机号
    星级评分插件
    JS 实现轮播图
    js 禁止网页后退
    删除Redis缓存
    分析器错误,未能加载类型
    Vue 禁止按钮重复提交
    Vue 页面加载前显示{{代码}}的原因及解决办法 PC端
    设计模式之策略模式
    数据库索引知识到MySQL InnoDB
  • 原文地址:https://www.cnblogs.com/liuyiyuan/p/13832420.html
Copyright © 2011-2022 走看看