publicclassOuts1{privateint sub;publicvoidin(){int sum =1;// 注意这个方法的局部变量的修饰符,如果当前变量被引用,并且被使用;jdk1.8后会自动为变量添加上final关键字;classins1{int sun =10;publicvoidrun(){int sua =12;
System.out.println("我是ins1局部内部类"+ sua +"\t"+ sun +"\t"+ sum +"\t"+ sub);}}
ins1 in1 =newins1();
in1.run();//方法的局部变量被使用// ----------------------------------// 调用局部变量时,因为局部变量的生命周期比局部内部类实例的生命周期短,所以,后者使用前者时要用final修饰局部变量// new ins1().run(); //也可以用}classins2{privateint sun;publicvoidrun(){
System.out.println("我是ins2成员内部类");}}staticclassins3{privateint sun;publicvoidrun(){
System.out.println("我是ins3静态内部类");}}publicvoidtest(){int a =20;newStudy(){//用这个更简洁publicbooleanstudy(){
System.out.println("我是匿名内部类");returnfalse;}}.study();}// 匿名内部类必须继承或实现一个已有的接口publicvoidtest1(){
Study a =newStudy(){@Overridepublicbooleanstudy(){
System.out.println("我是匿名内部类2");returnfalse;}};
a.study();}/**
* 访问或使用各内部类中的方法
*/publicvoiddispaly(){this.in();// 局部内部类this.newins2().run();// 成员内部类// new ins2().run();//成员内部类2newOuts1.ins3().run();// 静态内部类this.test();// 匿名内部类this.test1();}}