一、基础篇--1.1内部类

内部类主要有4种:

1.静态内部类(static inner class)

定义如下:

class OutClass{
    static class InnerClass{} //静态内部类
}

静态内部类是指被声明为static的内部类,它不依赖与外部类实例而被实例化。静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法包含私有类型)。

2.成员内部类(member inner class)

定义如下:

class OutClass{
    class InnerClass{} //成员内部类
}

成员内部类就是普通的内部类,可以自由引用外部类的方法,不管是静态还是非静态,但是内部不可以定义静态的方法和属性,而且只有被内部类被实例化后,这个类才能被实例化。

3.局部内部类(local inner class)

定义如下:

class OutClass{
    public void doSomeWork(){
        class innerClass{} //局部内部类
    }
}

局部内部类是定义在代码块中的类,它的作用范围为所在的代码块中,极少用到。局部内部类跟局部变量比较类似,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。如果局部内部类,在静态的代码块或者方法中,则会变成局部静态内部类。

4.匿名内部类(anonymous inner class)

定义如下:

class OutClass{
    new Runnable(){

            @Override

            public void run() {

                

            }

        }.run();
}

匿名内部类是一个没有类名的内部类,不能使用关键字class、extends、implement,没有构造函数,自身必须继承其他类或者接口。匿名内部类的好处是代码更加简洁。使用内部类需要牢记一下几个原则:

1.匿名内部类不能有构造函数;

2.匿名内部类不能定义静态成员、方法和类;

3.匿名内部类不能是public、protected、private、static;

4.只能创建内部类的一个实例;

5.一个匿名内部类一定是在new的后面,必须继承一个父类或者实现一个接口;

6.匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

posted @ 2019-03-04 15:35  Never-Say-Die  阅读(207)  评论(0编辑  收藏  举报