zoukankan      html  css  js  c++  java
  • java 子接口中定义与父接口相同的方法

    今天碰到一个很有意思的问题,在java中如果子接口中定义了与父接口中已经有的方法会发生什么事情呢?比如:

    interface IRunnable extends Runnable{
    	void run();
    }
    

    刚开始我还以为这样子的语法应该不能通过编译器,没有想到这样子做编译器并没有做出任何警告。

    当然大多数情况下我们都不会这么做,因为这样做似乎没有什么意义。但为了真相,我还是做了个小实现:

    public class InterfaceDebug{
    	public static void main(String[] args){
    		IRunnable irun1=new IRunnableImpl();
    		irun1.run();
    		Runnable irun=irun1;
    		irun.run();
    		irun=new IRunnableImpl2();
    		irun.run();
    	}
    	
    }
    interface IRunnable extends Runnable{
    	void run();
    }
    class IRunnableImpl implements IRunnable{
    	public void run(){
    		System.out.println("IRunnable of IRunnableImpl");
    	}
    }
    
    class IRunnableImpl2 implements Runnable{
    	public void run(){
    		System.out.println("IRunnable of IRunnableImpl2"); 
    	}
    }
    

    运行结果为:

    IRunnable of IRunnableImpl
    IRunnable of IRunnableImpl
    IRunnable of IRunnableImpl2
    

    这样子看到,在IRunnable中定义的run方法其实就是Runnable中的run,它们两是引用同一个东西的,并没有发生方法的覆盖。

  • 相关阅读:
    (QR14)带权的DAG节点排序
    数字组合
    最长连续不重复子序列
    树状数组
    归并排序
    差分
    前缀和
    64位整数乘法
    MySQL8 常用指令
    离线及实时实操架构
  • 原文地址:https://www.cnblogs.com/mosmith/p/4196406.html
Copyright © 2011-2022 走看看