1.内部类的定义
我们在定义类的过程中,可以在类中定义数据成员与方法,那么我们能否在类中定义类,答案是可以的,类也可以作为一种属性在类中定义被称为“内部类”,这很符合“万物皆对象的”的思想,既然我们可以将对象作为一种参数传入,当然也可以将类作为另一种类的属性。
a.创建内部类时,必须先定义外部类,内部类与外部类的属性和方法是并列关系。
b.外部类的内部可直接使用 内部类名 对象名 = new 内部类名 去实例化一个内部类对象。
c.内部类可通过“外部类名.this.变量名”去访问外部类可访问的属性和方法。
d.内部类可以访问外部类的私有数据成员与方法。
2.代码展示——使用内部类
class Out{ //定义一个外部类
private String name; //数据成员
public Out(String name){ //构造方法
this.name = name;
}
class In{ //内部类
private String name;
public In(){}
public In(String name){
this .name = name;
}
public void show(){
System.out.println(this.name);
System.out.println(Out.this.name); //访问外部类的数据成员
}
}
In in = new In(); //在类中可以直接建立内部类对象.
}
public class outin {
public static void main(String[] args) {
Out out = new Out("张三");
Out.In in = out.new In("李四");
in.show(); //调用内部类的方法
}
}
a.代码结果——
李四
张三
3. 局部内部类与静态内部类
局部内部类是定义在代码块中的类。
我们可以将类作为一种属性放在功能方法中,这样我们可以在功能方法中去定义我们需要的对象并调用该对象的方法。它可以让我们灵活的去完善我们要用的方法。当然它与其他属性一致。
a.作用域仅限该代码块
b.依旧可以访问外部类的私密属性与方法
静态内部类是通过static修饰的内部类
它与我们定义的静态类拥有同样的属性,但它是外部类的一种静态属性。
c.在测试类中我们可以将它作为外部类的一种静态属性,可以直接用外部类名去实例化内部类对象。