说一下个人理解:
在提出了内部类这个概念以后,一个类里面可以容纳的东西其实是增加到了四种:成员变量,成员方法,构造方法以及代码块(用于类或对象的初始化),内部类。当然,通俗地说,一个类的常住居民还是成员变量,成员方法和构造方法,每个类都可以包含这三个成分,当然内部类也不例外。个人觉得内部类说到底不过是把一个类放在了另一个类里面,内部类成了外部类的一部分。
首先,内部类作为一个类,他肯定是具有一般的类的功能和作用,换句话说,一般类能怎么操作,内部类同样可以这样操作。例如一般的类需要实例化对象后调用成员变量和方法,内部类同样需要实例化对象来调用成员或方法(当然如果是静态的,一般类可以通过类名调用,内部类也一样),这类的共同属性,不管内部外部类;
第二:内部类既然放在了外部类的里面,成了外部类的一个成员,对于自己的成员,外部类当然要显示出自己的管辖能力。恰如小孩(内部类)和监护人(外部类),首先他们同样是人,具有人的一般属性,但是监护人不会让小孩单独干事,小孩干什么首先需要征得监护人的同意。所以说,在第一段代码中,
Inner i = new Inner(); //类似于不通知监护人, 直接叫小孩去干事, 监护人自然是不会同意的
i.method();如果要调用内部类的方法,必须通过外部类(类似于先把监护人叫来,告知监护人,然后监护人领着小孩去干活),这样,首先要实例化外部类,再实例化内部类:new Outer().new Inner(),返回的值需要同等的数据类型来接收,这里的数据类型是:Outer.Inner 就类似于来人是: 张家的(外部类).小孩(内部类)
这样就可以调用内部类的方法了
oi.method();
以上是个人的理解,希望与你有用,论坛藏龙卧虎,还请大神斧正。
|