内部类

1、内部类什么时候使用?

B类如果要直接访问A类中的所有成员(包括私有)的时候,就可以把B类定义在A类里面

B类就是内部类

2、分类:

成员内部类、局部内部类,静态内部类,匿名内部类(重点)

3、成员内部类

访问特点:内部类可以直接访问外部类的所有成员:Outer.this

外部类想要访问内部类的成员必须创建内部类对象

创建内部类对象的两种方式

      Outer outer = new Outer();

Inner inner = outer.new Inner();

inner.innermethod();

若是普通方法,访问内部类的结构是:

Outer.Inner oi = new Outer().new Inner();

oi.innermethod();

4、静态内部类:用static修饰的内部类,外部类可以是普通方法;

创建格式:

内部类是静态时访问外部类的普通成员通过new Outer().成员

内部类访问外部类的静态成员通过:直接调用,同一个类中如果都是静态的访问时可以省略类名,直接方法():调用。

静态内部类中可以有静态方法和非静态方法

访问静态方法:

     //调用静态内部类的静态方法

静态类中如果是静态的方法时 Outer.Inner.innerMethod1();

访问非静态方法静态类中若是普通方法时用:

Outer.Inner oi = new Outer.Inner();

oi.innerMethod();

1、局部内部类:定义在方法中或者代码块中

特点:只在局部位置有效。就是在它的方法中有效

访问该方法的局部变量时只能是final修饰

2、匿名内部类:内部类的简写格式。

前提:继承一个类或者实现一个接口

格式:

New Fu() {

方法重写

}

匿名内部类的实质:是一个继承了类或者实现了接口的子类对象

new A(){

public void show1(){

System.out.println("重写方法");

}

}.show1();

//等价于 new Inner();

匿名内部类可以作为参数传递(常用)

原文地址:https://www.cnblogs.com/future-zmy/p/6083868.html