面向对象(三)

1、成员内部类

  例子:

            class Outer {
                 private int num = 4; // 定义类的成员变量
                  // 下面的代码定义了一个成员方法,方法中访问内部类
                 public void test() {
                 Inner inner = new Inner();
                 inner.show();
                }


               // 下面的代码定义了一个成员内部类
               class Inner {
                  void show() {
                  // 在成员内部类的方法中访问外部类的成员变量
                  System.out.println("num = " + num);
                 }
              }
           }


          public class Text {
             public static void main(String[] args) {
             Outer outer = new Outer(); // 创建外部类对象
             outer.test(); // 调用 test() 方法
             }
         }
           

          运行上面代码就可以在控制台输出“num = 4”,可以看出,内部类可以在外部内中被使用,并能访问外部类的成员。如果想通过外部类去访问内部类,则需要通过外部类对象创建内部类对象,创建内部类对象开语法如下:

          外部类名.内部类名      变量名    =  new   外部类名().new 内部类名();

      例:

            public class Example17 {
                   public static void main(String[] args) {
                  Outer.Inner inner = new Outer().new Inner(); // 创建内部类对象
                  inner.show(); // 调用 test() 方法
                   }
             }

 

2、静态内部类

      可以使用static关键字修饰一个成员内部类,该内部类被称作静态内部类,它可以在不创建外部类对象的情况下被实例化。创建静态内部类对象的语法如下:

           外部类名.内部类名   变量名    =  new   外部类名.内部类名();

     例:

          class Outer {
              private static int num = 6;
              // 下面的代码定义了一个静态内部类
             static class Inner {
                 void show() {
                 System.out.println("num = " + num);
                 }
             }
          }


          class  Text{
              public static void main(String[] args) {
                  Outer.Inner inner = new Outer.Inner();  // 创建内部类对象
                   inner.show();        // 调用内部类的方法
              }
           }

           注意:

                   A:在静态内部类中只能访问外部类的静态成员,如上例子第2行代码定义的变量num前面static去掉,编译就会出错

                   B:在静态内部类中可以定义静态的成员,而在非静态的内部类中部允许定义静态的成员。

3)、方法内部类

     方法内部类是指在成员方法中定义的类,它只能在当前方法中被使用。方法内部类可以访问外部类成员。

           class Outer {
                private int num = 4;  // 定义成员变量
                public void test() {
                   // 下面是在方法中定义的内部类
                   class Inner {
                       void show() {
                       System.out.println("num = " + num);  // 访问外部类的成员变量
                       }
                    }
                 Inner in = new Inner(); // 创建内部类对象
                 in.show();    // 调用内部类的方法
           }
         }


            public class  Text{
                 public static void main(String[] args) {
                    Outer outer = new Outer(); // 创建外部类对象
                    outer.test();    // 调用 test() 方法
                  }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值