package com.hisoft.java.DifferentClass;
/**
* 这是局部内部类的实例 局部内部类是定义在外部类的方法体中
* 局部内部在访问局部变量时,局部变量必须声明成final
*/
public class AreaMyouterClass {
private String instanceStr = "外部类的实例变量";
private static String staticStr = "外部类的静态变量";
String name;
public void testInner(String name) {
// 局部内部类的作用范围只在定义他的方法中有效
// 局部内部类访问局部变量,那么该局部变量默认是用final进行修饰的,
// 如果该局部变量是变量,则局部内部类是不能进行访问的;
final String innerMathName=name;
// innerMathName="tom";
class Inner {
public String name;
private String instanceStr = "内部类的实例变量";
// 在局部内部类中不能定义静态属性
// static String staticStr = "t";
public void run(){
System.out.println(innerMathName);
}
public Inner(String innerMathName) {
this.name = innerMathName;
}
public void innerPrint() {
// 访问的是内部类的实例变量
// 因为重名时,内部类的成员优先级更高
System.out.println(this.instanceStr);
// 如果想明确的使用外部类的this
// 那么就必须在this之前加上外部类的类名
System.out.println(AreaMyouterClass.this.instanceStr);
System.out.println(staticStr);
}
}
System.out.println(innerMathName);
Inner inner = new Inner(innerMathName);
inner.innerPrint();
System.out.println("this is 局部内部类的值"+inner.name);
}
public AreaMyouterClass() {
}
public AreaMyouterClass(String name){
AreaMyouterClass out = new AreaMyouterClass();
out.testInner(name);
}
public static void main(String[] args) {
AreaMyouterClass myout = new AreaMyouterClass("tom");
myout.testInner(myout.name);
}
}
局部内部类
最新推荐文章于 2023-04-19 15:38:52 发布