A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ethan丶 中级黑马   /  2015-9-19 07:54  /  386 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2.         成员内部类的修饰符:
  3.                 private 为了保证数据的安全性
  4.                 static 为了方便访问数据
  5.                         注意:静态内部类访问的外部类数据必须用静态修饰。
  6. */
  7. class Outer {
  8.         private int num = 10;
  9.         private static int num2 = 100;
  10.        
  11.         //内部类用静态修饰是因为内部类可以看出是外部类的成员
  12.         public static class Inner {
  13.                 public void show() {
  14.                         //System.out.println(num);
  15.                         System.out.println(num2);
  16.                 }

  17.                 public static void show2() {
  18.                         //System.out.println(num);
  19.                         System.out.println(num2);
  20.                 }               
  21.         }
  22. }

  23. class InnerClassDemo4 {
  24.         public static void main(String[] args) {
  25.                 //使用内部类
  26.                 // 限定的新静态类
  27.                 //Outer.Inner oi = new Outer().new Inner();
  28.                 //oi.show();
  29.                 //oi.show2();
  30.                
  31.                 //成员内部类被静态修饰后的访问方式是:
  32.                 //格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
  33.                 Outer.Inner oi = new Outer.Inner();
  34.                 oi.show();
  35.                 oi.show2();
  36.                
  37.                 //show2()的另一种调用方式
  38.                 Outer.Inner.show2();
  39.         }
  40. }
复制代码

       
        案例:我有一个人(人有身体,身体内有心脏。)
               
                class Body {
                        private class Heart {
                                public void operator() {
                                        System.out.println("心脏搭桥");
                                }
                        }
                       
                        public void method() {
                                if(如果你是外科医生) {
                                        Heart h = new Heart();
                                        h.operator();
                                }
                        }
                }
               

                Body.Heart bh = new Body().new Heart();
                bh.operator();
               
                Body b =  new Body();
                b.method();
*/

1 个回复

倒序浏览
1.  成员内部类
                1.1:private 为了数据的安全性
                1.2:static 为了访问的方便性
                格式:
                成员内部类不是静态的:
                        外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
                成员内部类是静态的:
                        外部类名.内部类名 对象名 = new 外部类名.内部类名();

2.        局部内部类
                2.1:局部内部类访问局部变量必须加final修饰。
                因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。所以,堆内存还是用该变量,而改变量已经没有了。为了让该值还存在,就加final修饰。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马