首页 > 其他 > 详细

内部类

时间:2020-04-01 09:46:59      阅读:50      评论:0      收藏:0      [点我收藏+]

1、内部类

(1)一个事物的内部包含着另一个事务,一个类内部包含着另一个类;

(2)分类:成员内部类,局部内部类(包含匿名内部类);

(3)成员内部类的定义格式:修饰符 class 外部类名称{

                修饰符 class 内部类名称{ ……  }

                ……

                }

    注意:内用外,随意访问;外用内,需要内部类对象;

(4)如何使用成员内部类:两种方式:1》间接方式:在外部类的方法中,使用内部类,然后main只是调用外部类的方法;

                  2》直接方式:(本质是:类名称 对象名=new 类名称();)

                        【外部类名称.内部类名称 对象名=new 外部类名称().new 内部类名称();】

(5)内部类与外部类变量同名的访问:在内部类方法中访问局部变量,直接访问,访问内部类的成员变量,this.变量名;访问外部类的成员变量,外部类.this.变量名;

(6)局部内部类:一个类定义在一个方法的内部;【”局部“只有当前所属的方法才能使用它,出了这个方法外部就不能用了】;

(7)定义格式:修饰符 class 外部类名称{

        修饰符 返回值类型 外部类方法名称(参数列表){

        class 局部内部类名称{ …… }

          }

        }

(8)定义一个类时权限修饰符规则:1》外部类:public/default

                 2》成员内部类:public/protected/default/private;局部内部类:什么都不能写;

(9)局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final的】;(注:从java8开始,只要局部变量事实不变,final关键字可以省略);

    原因:1new出来的对象在堆内存中;

       2》局部变量是跟着方法走的,在栈内存中;

       3》方法运行结束之后,立刻出栈,局部变量就会立刻消失;

       4》但是new出来的对象会在堆当中持续存在,直到垃圾回收时消失;

(10)匿名内部类(重点):如果接口的实现类,或父类的子类,只需要使用唯一一次,这种情况下可以省略掉该类的定义,使用匿名内部类;

(11)定义格式:【接口名称 对象名=new 接口名称(){ 覆盖重写所有抽象方法 };】;1new代表创建对象的动作;2》接口名称是匿名内部类需要实现哪个接口;3{ …… }才是匿名内部类的内容;

(12)匿名内部类的注意事项:1》匿名内部类在【创建对象】的时候,只能使用唯一一次;(如果希望多次创建对象,而且类的内容一样,必须使用单独定义的实现类);

              2》匿名对象,在【调用方法】的时候,只能调用唯一一次,如果希望同一对象调用多次方法,必须给对象起个名字;

              3》匿名内部类是省略了实现类/子类名称,匿名对象是省略了对象名称;

内部类

原文:https://www.cnblogs.com/xiaozhu1017/p/12609872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!