java-局部内部类1
源码
package com.InnerClass;
/*
演示局部内部类的使用
*/
public class LocalInnerClass01 {
public static void main(String[] args) {
//演示(6)
Outer02 outer02 = new Outer02();
outer02.m1();
}
}
class Outer02 {//外部类
private int n1 = 100;
private void m2() {
System.out.println("Outer02 m2()");
}//私有方法
public void m1() {//外部类方法
//(1)局部内部类是定义在外部类的局部位置 通常在方法
//(3)不能添加访问修饰符 但是可以使用final 修饰
//(4)作用域:仅仅在定义他的方法或者代码块中 出了这个范围用不了
class Inner02 {//局部内部类(本质仍然是一个类)
//(5)局部内部类 可以直接访问外部类的成员 比如下面外部类n1和m2()
//(2)可以直接访问外部类的所有成员 包含私有的
public void f1() {
System.out.println("n1=" + n1);
m2();
}
}
//class Inner03 extends Inner02{//不加final可以被继承
//(6)外部类在方法中 可以先创建Inner02对象 然后调用内部类方法即可
Inner02 inner02 = new Inner02();
inner02.f1();
}
}
java-局部内部类2
源码
package com.InnerClass;
/*
演示局部内部类的使用
*/
public class LocalInnerClass01 {
public static void main(String[] args) {
//演示(6)
Outer02 outer02 = new Outer02();
outer02.m1();
System.out.println(“outer02的hashcode=” + outer02);
}
}
class Outer02 {//外部类
private int n1 = 100;
private void m2() {
System.out.println("Outer02 m2()");
}//私有方法
public void m1() {//外部类方法
//(1)局部内部类是定义在外部类的局部位置 通常在方法
//(3)不能添加访问修饰符 但是可以使用final 修饰
//(4)作用域:仅仅在定义他的方法或者代码块中 出了这个范围用不了
class Inner02 {//局部内部类(本质仍然是一个类)
//(5)局部内部类 可以直接访问外部类的成员 比如下面外部类n1和m2()
//(2)可以直接访问外部类的所有成员 包含私有的
private int n1 = 800;
public void f1() {
System.out.println("n1=" + n1 + " 外部类的n1=" + Outer02.this.n1);
System.out.println("Outer02.this hashcode=" + Outer02.this);
m2();
}
}
//class Inner03 extends Inner02{//不加final可以被继承
//(6)外部类在方法中 可以先创建Inner02对象 然后调用内部类方法即可
//(7)如果外部类和局部内部类 的成员重名时 默认遵循就近原则
//如果想访问外部类的成员 使用外部类名.this.成员 去访问
//解读:Outer02.this 本质就是外部类的对象
//即 哪个对象调用了m1 Outer02.this 就是哪个对象
Inner02 inner02 = new Inner02();
inner02.f1();
}
}