本帖最后由 skyfly 于 2014-4-14 00:00 编辑
你这个代码 在主函数中进行实例化时,其实这样的写法有问题class day0904
{
public static void main(String[] args)
{
outer ou = new outer();
ou.method(5);
ou.method(6);
}
}
应该改成这样:class day0904
{
public static void main(String[] args)
{
outer.method ou = new outer().new method();//修改成这个,按照你这样写,就得在内部类里先创建一个对象.
ou.method(5);
ou.method(6);
}
}
从上面的例子不难看出,内部类其实严重破坏了良好的代码结构,但为什么还要使用内部类呢?
因为内部类可以随意使用外部类的成员变量(包括私有)而不用生成外部类的对象,这也是内部类的唯一优点
如同心脏可以直接访问身体的血液,而不是通过医生来抽血。
程序编译过后会产生两个.class文件,分别是oter.class和Outer$method.class
outer.method ou = new outer().new method()可以用来生成内部类的对象,这种方法存在两个小知识点需要注意
1.开头的Outer是为了标明需要生成的内部类对象在哪个外部类当中.
2.必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量.
|