java--4种内部类

时间:2023-03-09 06:49:00
java--4种内部类

内部类:

一 非静态内部类

//非静态内部类
//非静态内部类可任意调用外部类的局部变量,无论是否private
//在外部类中要实例化内部类:InnerClass inner = new InnerClass();
//其他类中实例化内部类:1.Test.InnerClass inner = new Test.new InnerClass();
// 2.Test t = new Test();
// t.InnerClass inner = t.new InnerClass();
//
class Test{
int i = 1;
class InnerClass{
public void run(){
System.out.println("outclass field = " + i);
}
}
public void run(){
InnerClass inner = new InnerClass();
}
}
class RunTest{
Test t = new Test();
t.InnerClass inner = t.new InnerClass();
//或者
Test.InnerClass inner = new Test.new InnerClass();
}

二 局部内部类

/**
* 局部内部类
* 1.局部内部类和局部变量作用相同,只在局部范围有效
* 2.局部内部类中可以直接调用外部类的成员变量
* 3.外部类创建局部内部类对象InClass inClass = new InClass();
* * **/
public class OutClass {
int i = 8;
public void run(){
class InClass{
public void run(){
System.out.println("run field i = " + i);
}
}
InClass inClass = new InClass();
inClass.run();
} }

三 静态内部类

/**
* 静态内部类
* 1.静态内部类也可正常访问外部类成员变量
* 2.外部类实例化内部类InClass inClass = new InClass();
* * **/
public class OutClass {
static int t = 6;
static class InClass{
int i = 5;
int j = t;
}
public void run(){
InClass inClass = new InClass();
System.out.println(inClass.i);
}
}

四 匿名内部类

标准创建方式

new anonymous{

};

使用

/**
* 匿名内部类
* **/
public class InnerClass4 {
public static void main(String[] args) {
Thread t = new Thread(){
public void run(){
for(int i = 1 ; i < 6 ; i++){
System.out.println(i + " Ÿ ");
}
}
};
t.start();
Runnable r = new Runnable(){
public void run(){
for(int i = 6 ; i < 11 ; i++){
System.out.println(i + " U ");
}
}
};
Thread t1 = new Thread(r);
t1.start();
}
}