10.内部类

2019-02-26  本文已影响0人  云木杉

可以将一个类的定义放在另一类的定义内部,这就是内部类。

使用内部类的原因

创建内部类

链接到外部类

使用this和new


public class DotNew{

    class InnerClass{
        public DotNew outer() {
            return DotNew.this;
        }   
    }
    
    public InnerClass inner() {
        return new InnerClass();
    }
    
    public static void main(String[] args) {
        DotNew d = new DotNew();
        DotNew.InnerClass in = d.inner();
    }
    
}

内部类与向上转型

在方法和作用域内的内部类

匿名内部类

abstract class Base{
    public Base(int i) {
        System.out.println("Base Constructor,i = " + i);
    }
    public abstract void f();   
}

public class AnonymousConstructor {
    public static Base getBase(int i) {
        return new Base(i) {
            {
                System.out.println("Inside instance initializer");
            }
            @Override
            public void f() {
                // TODO Auto-generated method stub
                System.out.println("In anonymous f()");
            }
        };
    }
    public static void main(String[] args) {
        Base base = getBase(47);
        base.f();
    }
}

嵌套类

为什么使用内部类 (模模糊糊)

控制框架

内部类的继承

class WithInner{
    class Inner{}
}
public class InheritInner extends WithInner.Inner{
    InheritInner(WithInner w){
        w.super();
    }
    public static void main(String[] args) {
        WithInner wi = new WithInner();
        InheritInner li = new InheritInner(wi);
    }
}

内部类可以被覆盖吗(不可以)

局部内部类

上一篇下一篇

猜你喜欢

热点阅读