一、基础概念
1.内部类是定义在类中的类。A类需要直接访问B类中的成员时,可以将A类定义到B类中,作为B类的内部类存在。
2.内部类可以相当于外部类中的一个成员,可以被成员修饰符所修饰。(如:public private static)
3.静态内部类可以相当于一个外部类进行使用。
4.非静态的内部类只允许定义静态的常量,不能定义其他静态成员。
5.访问规则:
内部类可以直接访问外部类中的成员,因为内部类持有了外部类的引用。外部类名.this
外部类要访问内部类需要创建内部类的对象。
二、实例代码
//外部类Outer class Outer { private static int num = 4; //内部类Inner_1 class Inner_1 { void show1() { System.out.println("内部类Inner_1 ,show1 "+num);//内部类Inner_1可以直接访问外部类Outer中的成员num } } //外部类中的方法Method访问内部类Inner_1中的方法show1 public void Method() { Inner_1 in = new Inner_1(); in.show1(); } //静态内部类Inner_2 static class Inner_2 { void show2() { System.out.println("内部静态类Inner_2 ,show2 "+num); } static void show3() { System.out.println("内部静态类Inner_2 ,show3 "+num); } } class Inner_4 { static final int count = 5; //内部类中定义静态的常量 void show4() { System.out.println("内部类Inner_4 ,show4 "+count); } } } class InnerClassDemo { public static void main(String[] args) { //创建外部类对象,访问内部类。 Outer out = new Outer(); out.Method(); //创建非静态的内部类对象,可以通过创建外部类对象,被外部其他程序访问。 Outer.Inner_1 i1 = new Outer().new Inner_1(); i1.show1(); //创建静态内部类对象,并访问非静态成员。 Outer.Inner_2 i2 = new Outer.Inner_2(); i2.show2(); //创建静态内部类对象,并访问静态成员。 Outer.Inner_2.show3(); Outer.Inner_2 i4 = new Outer.Inner_2(); i4.show3(); //创建非静态的内部类对象,并访问静态变量。 Outer.Inner_4 i5 = new Outer().new Inner_4(); i5.show4(); } }
转载请注明:IT运维空间 » Java » Java面向对象之内部类
发表评论