java学习中成员内部类小探索

来源:互联网 发布:白金数据结局 编辑:程序博客网 时间:2024/06/06 18:01

1、  内部类:将一个类定义在另一个类的内部就成了内部类;其实就是类定义的位置发生了变化。

2、  在一个类中,定义在类中的变量称为成员变量,定义在类中的函数称为成员函数(方法),那么根据类定义的位置也可以分为,成员内部类,局部内部类;PS:内部类产生的.class文件为“外部类&内部类”,这是为了表明内部类是属于哪个外部类的;

3、  成员内部类的访问方式:

1、  内部类可以直接访问外部类成员属性;

2、  外部类访问内部类成员属性时需要创建内部类的对象;

Outerj =new Outer();

Inner x = j.new Inner();

     x.test();

或者是Outer.Inner x = new Outer().new Inner();

1、  在外部内的成员函数中创建内部类的对象,通过内部类对象直接访问内部类的成员

2、  在其他类中直接创建内部类对象;

3、   私有成员内部类特点:不能在其他类中直接创建内部类对象来访问(private修饰了成员内部类),不能在其他类中直接创建私有成员内部类的对象;

4、  当用static 修饰成员内部类的里面的成员的时候,内部类要用Static修饰,创建含有静态成员的内部类的对象的时候需要这样创建;(java规定内部类必须声明为静态的访问静态内部类的形式):

Outer.Inner x= newOuter.Inner();普通方法试过了,不行

一个有趣的问题:

    当我们要在成员内部类中打印外部类的num时,在getNum方法中已经存在了两个This对象,我想我们之前学过,如果不声明打印的num,这时我们打印的应该是局部变量优先的值(全局变量中与局部变量名相同,以局部变量为优先),num值为2,所以此时num默认的的this为成员内部类的。

 

再次验证:num值为1;想要打印外部类的num变量,此时要区分this的所属类,此时this我们声明为外部类this,加上对应的类名标明this。

 

这时和我们讨论构造函数的this相同,当形参名和方法体里面的变量名相同时,也是同样的区分;

---------------------------------------------------------------------------------------------------------------------------------

0 0
原创粉丝点击