一、分类:
1、 成员内部类
- 格式:
修饰符 class 外部类名称{
修饰符 class 内部类名称{
//……
}
//……
}
-
注意:
内用外,随意访问;
外用内,需要内部对象
-
使用:
- 间接方式:在外部类的方法中使用内部类,然后main知识调用外部类的方法
- 直接方式:
- 外部类名称 . 内部类名称 对象名 = new 外部类名称() . new 内部类名称();
2、局部内部类(包含匿名内部类)
- 格式:
修饰符 class 外部类名称{
修饰符 返回值类型 外部类方法名称(参数列表){
修饰符 class 内部类名称{
//……
}
//……
//在方法里,定义内部类对象并调用内部类变量或方法
}
}
- 注意:只有当前所属的方法才能使用局部内部类,出了方法就不能用
二、访问同名变量
public class outter{
int num = 1;//外部类的成员变量
public class inner{
int num = 2;//内部类的成员变量
public void methodInner(){
int num = 3;//内部类方法的局部变量
System.out.println(num);//就近原则 3
System.out.println(this.num);//2
System.out.println(Outter.this.num);//1
}
}
}
类的权限修饰符
-
外部类:
public / (default)
-
成员内部类:
``public / protected / (default) / private`
-
局部内部类:
什么都不能写
,也不是(default)