• Java面向对象之内部类(访问格式)


    一、基础概念

      1.内部类是定义在类中的类。A类需要直接访问B类中的成员时,可以将A类定义到B类中,作为B类的内部类存在。

      2.内部类可以相当于外部类中的一个成员,可以被成员修饰符所修饰。(如:public private static)

      3.静态内部类可以相当于一个外部类进行使用。

      4.非静态的内部类只允许定义静态的常量,不能定义其他静态成员。

      5.访问规则:
        内部类可以直接访问外部类中的成员,因为内部类持有了外部类的引用。外部类名.this
        外部类要访问内部类需要创建内部类的对象。

    二、实例代码

     1 //外部类Outer
     2 class Outer
     3 {
     4     private static int num = 4;
     5     
     6     //内部类Inner_1
     7     class Inner_1
     8     {
     9         
    10         void show1()
    11         {
    12             System.out.println("内部类Inner_1 ,show1  "+num);//内部类Inner_1可以直接访问外部类Outer中的成员num
    13         }
    14     }
    15     
    16     //外部类中的方法Method访问内部类Inner_1中的方法show1
    17     public void Method()
    18     {
    19         Inner_1 in = new Inner_1();
    20         in.show1();
    21     }
    22     
    23     //静态内部类Inner_2
    24     static class Inner_2
    25     {
    26         void show2()
    27         {
    28             System.out.println("内部静态类Inner_2 ,show2  "+num);
    29         }
    30         static void show3()
    31         {
    32             System.out.println("内部静态类Inner_2 ,show3  "+num);
    33         }
    34     }
    35     
    36     class Inner_4
    37     {
    38         static final int count = 5;    //内部类中定义静态的常量
    39         void show4()
    40         {
    41             System.out.println("内部类Inner_4 ,show4  "+count);
    42         }
    43     }
    44 }
    45 
    46 class InnerClassDemo 
    47 {
    48     public static void main(String[] args) 
    49     {
    50         //创建外部类对象,访问内部类。
    51         Outer out = new Outer();
    52         out.Method();
    53         
    54         //创建非静态的内部类对象,可以通过创建外部类对象,被外部其他程序访问。
    55         Outer.Inner_1 i1 = new Outer().new Inner_1();
    56         i1.show1();
    57         
    58         //创建静态内部类对象,并访问非静态成员。
    59         Outer.Inner_2 i2 = new Outer.Inner_2();
    60         i2.show2();
    61         
    62         //创建静态内部类对象,并访问静态成员。
    63         Outer.Inner_2.show3();
    64         Outer.Inner_2 i4 = new Outer.Inner_2();
    65         i4.show3();
    66         
    67         //创建非静态的内部类对象,并访问静态变量。
    68         Outer.Inner_4 i5 = new Outer().new Inner_4();
    69         i5.show4();
    70     }
    71 }
    三、代码运行

      

  • 相关阅读:
    【PAT甲级】1128 N Queens Puzzle (20分)
    Codeforces Global Round 7D(马拉车/PAM,回文串)
    【PAT甲级】1127 ZigZagging on a Tree (30分)(已知中序后序蛇形输出层次遍历)
    SDOI2012 体育课
    APIO2018 Circle selection 选圆圈
    [科技] 求数列的前k次方和
    APIO2016 Fireworks
    CTSC2018 暴力写挂
    ZJOI2018 胖
    SDOI2017 数字表格
  • 原文地址:https://www.cnblogs.com/zhuxr/p/8991665.html
Copyright © 2020-2023  润新知