我本来就对内部类不敏感,今天看到人家写的挺好的就给copy过来了,说的好听就是自己留心了,说的不好听点就是自己懒得总结了......
class Outer{
private String title = "我爱黑马";
//普通成员内部类,类前不加修饰符
class Inner{
public void show(){
System.out.println(title);
System.out.println("成员内部类,不加修饰符");
}
}
//私有成员内部类,类前加修饰符private
private class Inner2{
public void show2(){
System.out.println("成员内部类,加修饰符private");
}
}
public void method(){
Inner2 i2 = new Inner2();
i2.show2();
}
//静态成员内部类,类前加修饰符static
public static class Inner3{
public void show3_1(){
System.out.println("静态成员内部类---非静态方法");
}
public static void show3_2(){
System.out.println("静态成员内部类---静态方法");
}
}
//局部内部类
public void partInner(){
final String num1 = "外部类--方法中---成员变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final
//定义类
class Inner3{
String num2 = "外部类--方法中---内部类---成员变量";
public void show(){
String num3 = "外部类--方法中---内部类---局部变量";
System.out.println(num3);
System.out.println(num2);
System.out.println(num1);
}
}
//创建对象-----局部内部类要在本方法中创建对象
Inner3 i = new Inner3();
i.show();
}
public void function()
{
Outer oo = new Outer();
oo.partInner();//这个function中上面两条语句的方法类似成员内部类的调用,视频中没讲,自己写的
//如果没有上面两条语句,这个function方法中只有下面两条语句,那么就是错误
//Inner3 r = new Inner3();
//r.show();
}
}
class Neibu {
public static void main(String[] args) {
System.out.println("第一种方式");
Outer.Inner oi = new Outer().new Inner();
oi.show();
System.out.println("-----------------");
System.out.println("第二种方式");
Outer oi2 = new Outer();
oi2.method();
System.out.println("-----------------");
System.out.println("第三种方式");
//如果内部类是static修饰
//格式:
//外部类名.内部类名 变量 = new 外部类名.内部类名();
Outer.Inner3 oi3 = new Outer.Inner3();
oi3.show3_1();
oi3.show3_2();
//Outer.Inner3.show3_1();
Outer.Inner3.show3_2();
System.out.println("-----------------");
System.out.println("第四种方式");
Outer oi4 = new Outer();
oi4.partInner();
System.out.println("-----------------");
oi4.function();//测试function()方法
}
}
运行结果:
原文:http://www.cnblogs.com/sweet105/p/4621382.html