内部类
一般情况来讲,类和类之间都是相互独立的,内部类的意思就是打破这种独立,然后一个类成为另外一个类的内部消息,和成员变量、成员方法同等级别。
非静态内部类
非静态内部类的使用就是将内部类作为外部类的一个成员变量或者成员方法来使用,我们这里看一下它的创建以及使用:
package outandinner;
public class OuterClass {
//成员变量
private String name="Outerclass";
//成员方法
public void display(){
System.out.println("OuterClass init------");
System.out.println(name);
}
//一个内部类
public class InnerClass{
private String name="InnerClass";
public void display(){
System.out.println("InnerClass init------");
System.out.println(name);
}
}
//主函数
public static void main(String[] args) {
//初始化一个外部类
OuterClass outerClass=new OuterClass();
outerClass.display();
//初始化一个内部类-是通过初始化外部类的这个对象来初始化内部类的
OuterClass.InnerClass innerClass=outerClass.new InnerClass();
innerClass.display();
}
}
静态内部类
静态内部类的构造不需要依赖外部类对象,因为静态内部类是属于这个类的,而不是属于这个对象的。
package outandinner;
public class OuterClass {
//成员变量
private String name="Outerclass";
//成员方法
public void display(){
System.out.println("OuterClass init------");
System.out.println(name);
}
//一个内部类
public static class InnerClass{
private String name="InnerClass";
public void display(){
System.out.println("InnerClass init------");
System.out.println(name);
}
}
//主函数
public static void main(String[] args) {
//初始化一个外部类
OuterClass outerClass=new OuterClass();
outerClass.display();
//初始化一个内部类-是通过初始化外部类的这个对象来初始化内部类的
OuterClass.InnerClass innerClass= new InnerClass();
InnerClass innerClass2= new InnerClass();
innerClass.display();
innerClass2.display();
}
}
- 我们静态内部类构造一个对象的时候,直观上看不能说和正常的类一模一样,只能说是毫无差别。
为什么使用内部类
- 使用内部类可以更好的隐藏代码的细节和内部结构,封装性更好,让程序更加合理且优雅。
- 基本的内部类可以在方法体中定义。这个时候类不能是
public