Inner Class(内部类)的用法说明
1.成员内部类
Java允许在一个已有类的内部定义的一个新类,这个新类被叫做内部类,这个内部类所在的类叫做外部类.
内部类中的变量和方法可以被外部类调用,内部类也可以访问外部类的成员.
如果想要通过外部类访问内部类,则需要通过外部类对象来创建内部类对象.
(如果内部类被private修饰,则外部类将无法访问)
outerclass.innerclass obj=new outerclass().new innerclass()
1-1 生成内部类对象的代码(此代码仅会生成内部类)
内部类也可以调用外部类的Constructor,如1-2;
但是此时是无法调用外部类的方法的,仍然需要单独创建外部类的对象来调用;
public class Outer {
int num=3;
String a;
public Outer(String a) {
this.a =a;
}
void say() {
System.out.println("Are you "+num+" years old, "+a+"?");
}
class inner{
int innernum=14;
String b;
public inner(String b) {
this.b=b;
}
void reply() {
System.out.println("No, "+a+".I'm not "+innernum+" years old.Right,"+b+"?");
}
}
public static void main(String[] args) {
Outer.inner obj=new Outer("Linda").new inner("Michael");
obj.reply();
}
}
1-2 生成结果应该为No, Linda.I'm not 14 years old.Right,Michael?
或者可以直接在外部类中写一个方法以生成内部类的对象
如果Inner Class是static类型,则可以在不创建Outer Class对象的情况下直接实例化
outerclass.innerclass obj = new outerclass.innerclass();
2.方法内部类
在成员方法内也可以定义类,但它只能在当前方法中被使用.
对于方法内部类来说,成员方法必须在它的field内有创建内部类对象并调用内部类的方法.
方法内部类也可以自由调用外部类的变量(除static方法外其他方法不能调用)