java匿名内部类

为何需要内部类:
java中不能多继承。(虽然接口可以多继承),但是抽象类,具体类类还是无法多继承的。内部类类似于组合方式解决这个。
但是通过使用内部类可以实现。

成员内部类(和方法同级别)内部类可以访问外部类的所有方法和属性(内部类对象会秘密的捕获一个外围类的引用由编译器完成),外部类的非静态方法使用内部类和普通类一样,一般会有指向内部类的引用,其他方法需要用outclass.innerclass 来指明使用外部的方法可以直接new inner();(main方法是游离于类之外的。)内部类中生成外部类的对象的引用, outclassname.this;外部内的对象可以用outclassobject.new innerclassname(); 创建内部对象。
局部内部类(在方法内部的类)和普通类没有什么区别,但是作用域只在局部作用域可用,多为辅助类,当前用一下而已
匿名内部类 匿名内部类是不能加访问修饰符的。要注意的是,new 匿名类,这个类是要先定义的 new classname(){},实际上创建的是继承类,当所在的方法的形参需要被内部类里面使用时,该形参必须为final。
嵌套类内部类和外围类之间没有联系,可以多层嵌套,拥有所有外围类的权限创建内部类不需要外围类对象

成员内部类:
内部类可以访问外部内的

匿名内部类:return new Contents(){插入类的定义};
这个插入的类一定继承(或者实现)Contents.


public class Parcel7 {
  public Contents contents() {
    return new Contents() { // Insert a class definition
      private int i = 11;
      public int value() { return i; }
    }; // }表示匿名内部类结束,;表示这个语句的结束
  }
  public static void main(String[] args) {
    Parcel7 p = new Parcel7();
    Contents c = p.contents();
  }
} ///:~

public class Parcel7b {
  class MyContents implements Contents {
    private int i = 11;
    public int value() { return i; }
  }
  public Contents contents() { return new MyContents(); }
  public static void main(String[] args) {
    Parcel7b p = new Parcel7b();
    Contents c = p.contents();
  }
} ///:~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值