`
高山流水123
  • 浏览: 25850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java----内部类

 
阅读更多

java----内部类
1,内部类定义:类中定义类;
2,内部类仅仅是一个编译期的语法;
3,分类:成员内部类:定义在外部类以内,方法以外

                     1可以访问外部类的私有成员;
                     2创建成员内部类对象,必须先创建外部类对象,再通过外部类
                      对象.new 构造内部类对象。
                      Outer.Inner in=new Outer.Inner();
                      in.print();
                      ==>
                      Outer o1=new Outer(100);
                      Outer.Inner in=o1.new Inner();
                      in.print();          
                     3内部类可以访问外部类的私有成员,而不破坏封装;
                     4成员内部类中不能有静态成员;
                     5外部类类名.this  指向外部类的当前对象;
                    

         静态内部类:static class Inner{
                       }
                       定义在外部类以内,方法以外

                    1 静态内部类只能访问外部类的静态成员;
                    2 创建静态内部类对象,不需要先创建外部类对象;
                      Outer.Inner in=new Outer.Inner();
                      in.print();
                     
         局部内部类:1 定义在方法内部;
                     2 作用于方法内部,出了就不能用了;

                     3 使用范围等同于局部变量;

                     4 局部内部类不仅可以访问外部类的私有成员,还可以访问外部类的局部变量,

                        但是必须被声明为final(局部常量);

      %  匿名内部类:把定义类,实现接口,new对象  三步合一了;

                                new I (){                     };

                                匿名内部类无法定义构造方法,因为构造方法名称要与类名一致,而匿名没有名字

                                所以匿名内部类的构造方法是默认的。

                      1 特殊的局部内部类;

                      2 继承一个类或是实现一个接口;

                      3 只会创建该类的一个对象;

 

     注:1  内部类可以访问外部类的私有成员,而不破坏封装;

            2  接口公开,接口的实现类作为内部类隐藏起来,强制弱耦合;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics