public class Person {
//单例模式
private static Person person = new Person();
String name ;
int num = 100;
public static Person getInstance(){
return person;
}
//在方法 和代码块中也是可以定义内部类的 当内部类要访问方法中的变量时候 要加 final关键字
public void test() {
final int a = 1;
class Person3 {
int num = 22;
public void fun3() {
System.out.println("内部类"+ this.num+a);
System.out.println("内部类"+ Person.this.num);
}
}
Person1 p = new Person1(this);
p.fun1();
Person2 p2 = new Person2();
p2.fun2();
Person3 p3 = new Person3();
p3.fun3();
}
class Person2 {
int num = 22;
public void fun2() {
System.out.println("内部类"+ this.num);
System.out.println("内部类"+ Person.this.num);
}
}
public static void main(String[] args) {
//单利模式
Person p1 = Person.getInstance();
Person p2 = Person.getInstance();
System.out.println(p1==p2);
p1.test();
Person.Person2 person2 = p1.new Person2();//内部类对象的创建方式
}
}
//一个外部类要访问另外一个类的成元变量 需要定义一个构造函数 然后在new对象的时候传入this
class Person1{
Person person;
public Person1(Person person) {
this.person = person;
}
public void fun1(){
System.out.println("外部类要访问另外一个类的成元变量"+person.num);
}
}
打印结果:
true
外部类要访问另外一个类的成元变量100
内部类22
内部类100
内部类221
内部类100