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,它们两是引用同一个东西的,并没有发生方法的覆盖。

  • 相关阅读:
    solr 最佳实践
    DNS 域名解析过程
    mac 下 virtualbox 配置全网通
    搜索引擎使用技巧
    三叉搜索树
    双数组trie树的基本构造及简单优化
    基于回归-马尔科夫模型的客运量预测
    solr 常用命令
    PHP yield 分析,以及协程的实现,超详细版(上)
    C语言,简单计算器【上】
  • 原文地址:https://www.cnblogs.com/mosmith/p/4196406.html
Copyright © 2011-2022 走看看