(34)内部类

来源:互联网 发布:首席网络运营官 编辑:程序博客网 时间:2024/05/20 20:56

内部类[不常用]

一、

定义:将一个类定义在另一个类的里面,对里面的那个类就称为内部类(内置类、嵌套类)

二、内部类的访问规则(互访方式)

①内部类可以直接访问外部类中的成员,包括私有

之所以可以直接访问外部类的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this

②外部类要访问内部类,必须建立内部类对象

对这个访问规则简单解释:

若孙悟空就在牛魔王的肚子里,孙悟空要访问心脏,则可直接去,直接访问(内部类直接访问外部成员)

若牛魔王要访问孙悟空的心脏,要先建立孙悟空对象,再得到孙悟空的心脏。(外部类访问内部类)

三、举个栗子:



public class Outer {   int x=3;class Inner{ int x=4;void function() {int x=6;System.out.println("inner:"+x);//6System.out.println("inner:"+this.x);//4System.out.println("inner:"+Outer.this.x);//3}}public void method() {Inner in=new Inner();in.function();}}public class Demo {public static void main(String[] args) {// TODO Auto-generated method stub/* * 间接访问内部类成员 */           Outer ot=new Outer();           ot.method();           /*            * 直接访问内部类成员            */           Outer.Inner in=new Outer().new Inner();}






四、访问方式

当内部类定义在外部类的成员位置上时,而且非私有,可以在外部其他类中,可以直接建立内部类对象。

格式:外部类.内部类 变量名=new外部类名().内部类名()

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

②当内部类在成员位置上,就可以被成员修饰符所修饰

比如,private:将内部类在外部类中进行封装。

Static:内部类就具备static的特性

当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。

在外部其他类中创建


五、什么时候用内部类

当描述事物时,事物的内部还有事物,该事物用内部类描述。

因为内部事务在使用外部事物的内容