内部类、内置类、嵌套类

来源:互联网 发布:redis实战java代码 编辑:程序博客网 时间:2024/06/05 03:37

明确:内部类=内置类=嵌套类(由于翻译的问题造成)


1、定义:

就是将一个类定义在另一个类的里面,里面的那个类就称为内部类。

2、访问特点

(1)内部类可以直接访问外部类中的数据,包括私有成员。
(2)而外部类要访问内部类中的成员必须建立内部类的对象。

3、编译生成的文件名

外部类名$内部类名.class其中名字含有所属关系

4、为什么要使用内部类呢?

可以使访问变量更加简单。


eg1:
(1)

```class outer{    private int a=3;}class inter    {       void show()       {           System.out.println("show run..."+a);       }        }class outer{private int a=3;class inter{   void show()   {   System.out.println("show run..."+a);   }  }}

(1)中的两个对象,如果inter想要访问outer中的a,必须通过建立实例化对象进行访问。而对于(2)中的inter则不需如此繁琐,可以直接访问,因为inter是outer中的一个部分。

eg2:(有点不恰当,纯属娱乐)
孙悟空向铁扇公主借扇子——飞到肚子里和在肚子外,肚子外没借到,但是肚子里就可以借到了。

5、一般用于对类的设计

分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容,这时就可以使用内部类了。
eg:身体
心脏设计在身体内,因为心脏要访问身体内部的很多部分,所以直接设计在身体里面。

6、内部类的修饰符

(1)直接访问外部类中的内部类的成员——格式:外部类名.内部类名=new 外部类对象.内部类对象();
eg: outer.inter=new outer().new.inter();
(2)当内部类是一个静态类时,相当于一个外部类,应为outer加载时,inter就加载了。
eg:outer.inter i=new outer.inter();//此时直接调用即可,不用在new inter
i.show();
(3)当内部类是静态时,成员也是静态时,(如果内部类定义了静态成员,该内部类也必须是静态的)
eg: outer.inter.show();

7、细节辨析

(1)

class outer{    int num=3;    class inter    {        int num=4;        void show()        {            int num=5;            System.out.println("num="+num);        }    void show1()    {        new inter().show();    }    }}public class innerClassDemo {public static void main(String[] args){    new outer().show1();}}
输出:5

(2)

class outer{    int num=3;    class inter    {        int num=4;        void show()        {            int num=5;            System.out.println("num=“+this.num);        }    void show1()    {        new inter().show();    }    }}public class innerClassDemo {public static void main(String[] args){    new outer().show1();}}
输出:4

(3)

class outer{    int num=3;    class inter    {        int num=4;        void show()        {            int num=5;            System.out.println("num=“+outer.this.num);        }    void show1()    {            new inter().show();    }    }}public class innerClassDemo {public static void main(String[] args){    new outer().show1();}}
输出:3

解释:为什么内部类能直接访问外部内的成员呢? 因为内部类持有了外部类的引用——外部类名.this 由此可知内部类和外部类也是依赖于对象进行引用。

0 0
原创粉丝点击