内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。
内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)
优点:可以额外的使用外部类的属性
缺点:破环了类的基本结构
间接调用内部类
eg:
public class Outer {
private int a =1;
/**
* 内部类
*/
class Inner{
public void show(){
System.out.println(a);//这里的a是外部类的私有属性,内部类可以直接使用
}
}
public void show(){
Inner inner = new Inner();
inner.show();
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.show();
}
}
直接调用内部类
eg:
public class Outer {
private int a = 1;
class Inner{
public void show() {
System.out.println(a);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.show();
}
}
本来的话 Inner inner=new Inner(); 即可 但是Inner是内部类 所以java语法规则要求 要加下Outer. 以及outer. 前缀 一个是类名前缀 一个是对象前缀。