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

  • 相关阅读:
    虚拟机的类加载机制
    数组
    Intellij快捷键
    Wireshark过滤器语法设置
    Git命令(转)
    Git命令
    字节码指令简介(转)
    Java异常了解
    Class类文件的结构
    垃圾收集器与内存分配策略(六)之内存分配与回收策略
  • 原文地址:https://www.cnblogs.com/mosmith/p/4196406.html
Copyright © 2011-2022 走看看