Android知识补充:内部类

内部类:将一个类定义在一个类里面或是一个方法里面。

  1. 内部类分类:

    1. 成员内部类:作为类或方法的一个成员存在。

    2. 局部内部类:方法体里面的类,称为局部内部类。

    3. 匿名内部类:没有构造器的类。

    4. 静态内部类:

  2. 成员内部类:

    成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)

    wKioL1X7hTPzcpSLAAEIJlrp010929.jpg

    注意:

    当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以  外部类.this.成员变量/成员方法  的形式访问

    在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问:

    要创建成员内部类的对象,前提是必须存在一个外部类的对象。创建成员内部类对象的一般方式如下:

    wKioL1X7hwKhzTs5AAHWeBjdaK4735.jpg

  3. 局部内部类


局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内

注意: 局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。

wKioL1X7h-WgdmdDAADn5NIq7OY899.jpg

匿名内部类是Android开发中用得最多的内部类,在编写事件监听的代码时使用匿名内部类不但方便,而且使代码更加容易维护。下面这段代码是一段Android事件监听代码:

wKiom1X7hh6Qx0EYAAE4fFOZN4I560.jpg

匿名内部类是不能有访问修饰符和static修饰符的

匿名内部类是唯一一种没有构造器的类

匿名内部类在编译的时候由系统自动起名Outter$1.class

一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。

静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。


你可能感兴趣的:(android,内部类,知识)