public class Test4 {
//类里的内部类
class Inner1{
private String name;
public void say(){
System.out.println("我是类里的内部类,只能本类里的方法可以访问");
}
}
//在方法里访问类里的内部类
public void test(){
Inner1 in1 = new Inner1();
in1.name = "aaaaaaaa";
in1.say();
// Inner2 in2 = new Inner2();//不能访问
// in2.say();
}
//方法里的内部类实例调用
public void test2(){
//方法里的内部类
class Inner2{
private String name;
public void say(){
System.out.println("我是方法的内部类,只能在这个方法里访问");
}
}
Inner2 in2 = new Inner2();
in2.say();
}
//静态内部类
static class Inner3Static{
private String name;
public void say(){
System.out.println("我是类里的静态内部类,不需要外部类实例获得");
}
}
//匿名内部类
public testI test3(){
return new testI(){
public void test1(){
System.out.println("我是实现接口的匿名内部类");
}
};
};
public static void main(String...strings){
Test4 T = new Test4();
T.test();
T.test2();
//访问内部类
Inner1 in2 = T.new Inner1();;
in2.say();
// Inner1 in2 = new Inner1();//不能访问
// in2.say();
// Inner2 in2 = new Inner2();//不能访问
// in2.say();
//访问静态内部类
Inner3Static in3 = new Inner3Static();
in3.say();
T.test3().test1();//调用匿名内部类的实现方法
}
}
interface testI{
void test1();
}
//类里的内部类
class Inner1{
private String name;
public void say(){
System.out.println("我是类里的内部类,只能本类里的方法可以访问");
}
}
//在方法里访问类里的内部类
public void test(){
Inner1 in1 = new Inner1();
in1.name = "aaaaaaaa";
in1.say();
// Inner2 in2 = new Inner2();//不能访问
// in2.say();
}
//方法里的内部类实例调用
public void test2(){
//方法里的内部类
class Inner2{
private String name;
public void say(){
System.out.println("我是方法的内部类,只能在这个方法里访问");
}
}
Inner2 in2 = new Inner2();
in2.say();
}
//静态内部类
static class Inner3Static{
private String name;
public void say(){
System.out.println("我是类里的静态内部类,不需要外部类实例获得");
}
}
//匿名内部类
public testI test3(){
return new testI(){
public void test1(){
System.out.println("我是实现接口的匿名内部类");
}
};
};
public static void main(String...strings){
Test4 T = new Test4();
T.test();
T.test2();
//访问内部类
Inner1 in2 = T.new Inner1();;
in2.say();
// Inner1 in2 = new Inner1();//不能访问
// in2.say();
// Inner2 in2 = new Inner2();//不能访问
// in2.say();
//访问静态内部类
Inner3Static in3 = new Inner3Static();
in3.say();
T.test3().test1();//调用匿名内部类的实现方法
}
}
interface testI{
void test1();
}