public class TestInnerClass {
public static void main(String[] args) {
// 1.成员变量
Person p = new Person();
// System.out.println(p.num);
// 成员内部类对象的创建格式
Person.Xin x = new Person().new Xin();
// 2.调用成员内部类对象的成员方法methodA
x.methodA();
// 私有的内部类对象的使用,先建立外部类对象,然后调用外部类对象的成员方法(创建了一私有内部类对象,并调用其方法)
p.method();
// 3.静态内部类的使用
System.out.println(Person.num2);
// Person.Shen s = Person.new Shen();
Person.Shen s = new Person.Shen();
s.methodC();
// 调用静态内部类中的静态方法
Person.Shen.methodD();
// 调用成员方法methodE
p.methodE();
}
}
class Person {
public int num = 20;// 成员变量 num = 20
private int num1 = 40;
public static int num2 = 30;
// 1.成员内部类,作为外部类的成员,可以直接访问外部类的属性,包括私有
class Xin {
private int num = 30;
public void methodA() {
int num = 50;
System.out.println("扑通扑通的跳......" + num);
System.out.println("扑通扑通的跳......" + this.num);
// 访问外部类的成员
System.out.println("扑通扑通的跳......" + Person.this.num);
}
}
// 2.内部类既然作为外部类的成员,就可以用成员修饰符private
// private修饰之后说明只能在本类(Person)中使用
// 可以在Person类中建立一个成员方法,该成员方法中建立一个私有的内部类对象
private class Gan {
public void methodB() {
System.out.println("排毒中....");
}
}
// 私有内部类,在外部无法直接使用,所以在外部类的成员方法中创建私有内部类对象,再直接调用该对象的方法
public void method() {
Gan g = new Gan();
g.methodB();
}
// 3.内部类既然作为外部类的成员,就可以用成员修饰符static
static class Shen {
public void methodC() {
System.out.println("少敲点代码,我太辛苦了...,再继续的话,我的第一反应就是掉头发....");
}
public static void methodD() {
System.out.println("少敲点代码,我太辛苦了...,再继续的话..就会失眠.....");
}
}
// 4.局部内部类(在方法内部定义的类叫局部内部类)
public void methodE() {
class Fei {
public void methodF() {
System.out.println("别再抽烟了,受不鸟你了.....");
}
}
// 局部内部类的使用:在哪个方法里定义的局部内部类,就直接在该方法中创建对象,并调用方法
Fei f = new Fei();
f.methodF();
//System.out.println(f);
}
} |