1.内部类概念
-
什么是内部类?
将类写在其它类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类(内置类,嵌套类),其他类也称为外部类。
-
什么时候使用内部类?
在描述事物时,若一个事物内部还包含其它可能包含的事物,比如在描述汽车时,汽车中还包含这发动机,这时发动机就可以使用内部类来描述。
-
内部类的分类有哪些?
内部类分为:成员内部类、局部内部类、匿名内部类和静态内部类。
-
内部类的编译特点?
对于一个名为OuterClass的外部类和一个名为InnerClass的内部类,在编译成功后,会出现这样两个class文件:OuterClass.class和OuterClass$InnerClass.class。
-
内部类的访问特点?
内部类可以直接访问外部类中的成员,外部类要访问内部类,必须要建立内部类对象。
2.成员内部类
成员内部类,定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问。
- 定义格式
class 外部类 {
修饰符 class 内部类 {
// 其它代码
}
}
【示例】成员内部类代码演示
// 外部类
class OuterClass {
// 成员内部类
public class InnerClass {
// 成员内部类的成员变量
String name;
// 成员内部类的构造方法
public InnerClass() {
} // 无参构造方法
public InnerClass(String name) {
// 有参构造方法
this.name = name;
}
// 成员内部类的成员方法
public void test() {
System.out.println("innerClass test()");
}
}
// 外部类成员方法
public void show() {
// 实例化成员内部类
InnerClass in = new InnerClass("小明");
// 获取成员内内部类的属性
System.out.println(in.name); // 输出:小明
// 调用成员内内部类的方法
in.test();
}
}
// 测试类
public class InnerClassDemo {
public static void main(String[] args) {
new OuterClass().show();
}
}
- 内部类访问方式
外部类名.内部类名 变量名 = new 外部类名(实参列表).new 内部类名(实参列表);
【示例】内部类访问方式代码演示
// 外部类
class OuterClass {
String sex = "娜娜";
// 成员内部类
public class InnerClass {
// 成员内部类的成员变量
String name;
// 成员内部类的构造方法
public InnerClass() {
} // 无参构造方法
public InnerClass(String name) {
// 有参构造方法
this.name = name;
}
// 成员内部类的成员方法
public void test() {
System.out.println("innerClass test()");
}
}
}
// 测试类
public class InnerClassDemo {
public static void main(String[] args) {
/*
* 实例化内部类完整写法
* OuterClass outer = new OuterClass();
* OuterClass.InnerClass in = outer.new InnerClass();
*/
OuterClass.InnerClass in