JAVA复习笔记--------类(二)内部类



将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。当我们在描述一个事物时,如果事物的内部还有事物,该事物就可以用内部类来描述。因为内部事务在使用外部事物的内容。这样的目的是不想把内务的事物单独分化出来,这样可以避免其他类对其进行时实例化,就算是要访问,必须经过该内部类的外部类的同意。在大学的课堂里,并没涉及此方面的内容,。该方面的知识点给了我很大困惑。现在看来也只是Java为了提供更加适合需求而封装的一种资源形势。同样有成员变量和访问的方式,与平常的类在本职上并无二异。她的访问特点:内部类可以直接访问外部类中的成员,包括私有成员。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,引用的格式外部类名.this.而外部类要访问内部类中的成员必须要建立内部类的对象。如:

class Outer{

     private int x = 3;

     class Inner{ //内部类

            void function(){

         System.out.println("innner :"+Outer.this.x);

      }

     }

     void method(){

         Inner in = new Inner();

      in.function();

    }

}

如果内部类定义在外部类的成员位置上,而且菲斯有,则可以在外部其他类中进行调用,格式为:

  外部类名.内部类名  变量名 = 外部类对象.内部类对象;

Outer.Inner in = new Outer().new Inner();

同时,当内部类在成员的位置上时就可以被成员修饰符所修饰。例如:被private修饰,则是将内部类在外部类中进行封装。

static修饰的内部类就具备了static的特性,只能访问外部类中的静态成员,因而出现了访问局限。而外部其他类访问静态内部类中的static成员时用:new Outer.Inner().function();当访问static内部类的静态成员时用:Outer.Inner.function()。当内部类中定义了静态成员,该内部类必须是静态的,同样的,当内部了访问内部类时,内部类也必须是静态的。

内部类也可以定义在局部位置上,此时就不可以用成员修饰符修饰。因为还持有外部类的引用,所以可以直接访问外部类中的成员。也不可以访问所在局部中的局部变量,只有是被final修饰的了以后才可以被访问

匿名内部类是内部类的简化写法。她的前提是:内部类必须继承或实现一个外部类或者接口格式为:ne外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}
简单理解:就是建立一个建立一个带内容的外部类或者接口的子类匿名对象。同时为了不过于臃肿,匿名类中的定义的方法最好不要超过三个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值