浅析匿名内部类

public class Parcel7 {

  public Contents contents() {
      return new Contents(){
            private int i = 2;
            public int value(){return i;}
      };
   }
 

 public static void main(String[] args) {
    Parcel7 p = new Parcel7();
    Contents c = p.contents();
  
  }

}

 

class Contents{}

先看这个代码,注意Contents类时空的,当读者试调用c.value();打印出i的值时,即System.out.println(c.value)时会发现编译器会提示找不到value()方法,这就很奇怪了,怎么会木有呢?于是我修改了Contents的代码,即

class Contents{

 

   private int i = 1;
   public int value(){
        return i;
    }
 }

编译器提示了在匿名类的value方法添加override标注,于是明白了,原来匿名内部类是指创建一个继承于Contents的匿名对象

所以读者在main函数里运行System.out.println(c.value());显然输出结果是2.而不是1

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值