Java内部类
内部类
一个类内部包含另一个类,就是套娃
在定义一个类的时候,可以在这个类里面在套一个类,这样在外部类中就可以实例化这个内部类,使用这个内部类的方法
分两种:成员内部类,局部内部类
成员内部类
就是在外部类里直接定义作为这个类的成员的类
格式:
1 |
|
例子:
1 |
|
- 内部类用外部类的方法随意使用
- 外部类用内部类需要实例化内部类对象
使用成员内部类方法
1.间接方法: 在外部类的方法中,使用内部类,然后只调用外部类的方法
2.直接方法: 外部类名称.内部类名称 对象名称 = new 外部类名称().new 内部类名称();
1 |
|
如果内外部重名了,内部类使用外部类的方法是 外部类名称.this.外部类成员变量名
局部内部类
如果一个类是定义在方法内部的,那么这是一个局部内部类
局部: 只有当前所属的方法才能使用它,出了这个方法就不能用了
格式:
1 |
|
- 就是一个方法里面定义了一个类,方便在这个方法内使用,别的地方都不能使用这个类
例子:用起来和普通的类的方法没区别,只是这个方法在允许的时候会创建一个类,并且使用这个类的方法1
2
3
4
5
6
7
8
9
10
11
12public class Outer {
public void methodOuter(){ //这是一个外部类方法
class Inner{ //在方法里面定义的类
int num = 10;
public void methodInner(){
System.out.println(num);
}
}
Inner inner = new Inner(); //在方法里面实例这个类
inner.methodInner(); //使用对象的方法
}
}1
2
3
4
5
6public class demo{
public static void main(String[] args){
Outer outer = new Outer(); //实例化一个外部类
outer.methodOuter(); //使用这个类的方法
}
}
匿名内部类
如果接口的实现类(或是父类的子类)只需要使用唯一的一次,那么这种情况就可以省略该类的定义,改为使用匿名内部类
格式:
1 |
|
匿名内部类在创建对象的时候,只能使用唯一一次
这样就可以在使用接口的时候不用特意定义一个接口的实现类
例子:
1 |
|
1 |
|
不难,在脑子里想了一下,在做了个总结后,清晰许多了