-- Start
定义在类中的内部类
public class Test {
public static void main(String[] args) throws Exception {
Outer o = new Outer("尚波"); // 要想实例化内部类, 首先必须得到外部类对象
Outer.Inner i = o.new Inner(); // 用特殊的 new 语法来构造内部类对象
System.out.println(i.getName()); // 调用内部类的方法
}
}
class Outer {
private String name;
Outer(String name) {
this.name = name;
}
class Inner {
String getName() {
return name; // 内部类可以访问外部类的域
}
}
}
定义在类中的静态内部类
public class Test {
public static void main(String[] args) throws Exception {
Outer.Inner i = new Outer.Inner("尚波"); // 静态内部类只和外部类关联, 和外部类对象没有关系,所以不需要实例化外部类对象
System.out.println(i.getName());
}
}
class Outer {
static class Inner {
private String name;
Inner(String name) {
this.name = name;
}
String getName() {
return name;
}
}
}
定义在方法中的内部类
public class Test {
public static void main(String[] args) throws Exception {
Outer o = new Outer();
o.print("尚波");
}
}
class Outer {
Outer() {
}
void print(final String name) { // 为了使内部类的方法可以访问 name, name 必须定义为 final
// 定义内部类
class Inner {
void print() {
System.out.println(name);
}
}
// 实例化内部类
Inner i = new Inner();
// 调用内部类的方法
i.print();
}
}
定义在方法中的匿名内部类
public class Test {
public static void main(String[] args) throws Exception {
Outer o = new Outer();
o.print("尚波");
}
}
class Outer {
Outer() {
}
void print(final String name) { // 为了使匿名内部类的方法可以访问 name, name 必须定义为 final
// 定义及实例化匿名内部类, 由于匿名内部类没有名字, 所以在定义的同时必须实例化
Printer p = new Printer() {
public void print() {
System.out.println(name);
}
};
// 调用匿名内部类的方法
p.print();
}
}
interface Printer {
void print();
}
--- 更多参见: Java 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-25
-- Written by ShangBo on 2012-05-25
-- End