zoukankan      html  css  js  c++  java
  • java【基础】多态

    new 接口就会发生很有意思的现象

    public class InerClassDemo {
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            new OutClass().callB(new B() {
    
                @Override
                public void echo() {
                    // TODO Auto-generated method stub
                    System.out.println("多态的一种展示形式");
                }
                
            });
        }
        
    }
    
    
    interface B{
        public void echo();
    }
    
    class OutClass{
        
        public void callB(B b) {
            b.echo();
        }
        
    }

    new 接口 其实是生成了一个匿名的已经实现过接口抽象方法的类。我们用反编译工具发现这段代码生成了如下几个class文件

    B.class 是接口 InnerClassDemo是有mian方法的入口类 OutClass是我们的实际操作的类。那么这个InnerClassDemo$1.class 是什么鬼。

    最后发现这个类,其实是一个实现了B接口的一个类。其实这个就是当new 接口的时候,会自动创建一个实现了接口的一个类,然后调用它实现过的抽象方法。

  • 相关阅读:
    2021年1月4号
    2021年1月3号
    2021年1月2日
    2021年1月1日
    Jenkins定时构建与轮询SCM
    2017-08-22校验
    2017-08-21xlVBASplitSheetsSameTime
    20170821xlVBA跨表公式套用
    20170821xlVBA隐藏空行
    20170814xlVBA限定日期按客户分类汇总
  • 原文地址:https://www.cnblogs.com/gavinjunftd/p/9327808.html
Copyright © 2011-2022 走看看