黑马程序员技术交流社区

标题: 请教关类的问题 [打印本页]

作者: 黑马--马超    时间: 2012-7-23 15:20
标题: 请教关类的问题
本帖最后由 cookie110 于 2012-7-24 13:41 编辑



作者: 田向向    时间: 2012-7-23 16:18
我根据我的理解来给你回答一下吧
第一个问题:内部类是外部类的一个成员,内部类中不能定义静态成员,编译后,内部类也有自己的class文件,内部类主要是一个作用域的问题。你在一个类里声明一个private 的变量或者实例,别的类不能直接调用,但是他的内部类可以,

2.如何使用一个外部类调用另外一个外部类的内部类中的一个方法?
我自己写了一个代码你看看

public class A {

        public void test()
        {
                B b=new B();
                b.new C().say();
        }
        public static void main(String[] args) {
                A a=new A();
                a.test();

        }

}
class B
{
        class C
        {
                public void say()
                {
                        System.out.println("Hello");
                }
        }
}

由于C是B的内部类,所以必须用C的对象来点new才能创建C类的对象。也就是这个内部类对象是依赖外部类对象存在的
作者: 孙飞    时间: 2012-7-23 16:22
本帖最后由 feigecal 于 2012-7-23 17:06 编辑

当描述事物时,事物的内部还有事物,就用内部类来描述。内部类可以定义在外部类的成员位置上,也可以定义在外部类的方法内部即局部内部类。内部类保留着隐匿的外部类的引用Outer.this,所以可以直接访问外部类的成员变量包括私有的。外部类想要访问内部类的方法就必须new  一个内部类的对象,调用内部类方法的格式为new Outer().new Inter().function()。外部类只可以被public和默认修饰符修饰,但内部类可以被任意修饰成员的修饰符修饰,可以被私有也可以被静态,当内部类被静态后可以直接用外部类的名调用,调用内部类方法的格式为new Outer.Inter().function(),但是静态内部类只能访问外部类的静态成员,出现了访问局限。另外局部内部只能访问被final修饰的局部变量。
作者: 黑马--马超    时间: 2012-7-23 17:02
田向向 发表于 2012-7-23 16:18
我根据我的理解来给你回答一下吧
第一个问题:内部类是外部类的一个成员,内部类中不能定义静态成员,编译 ...

不错不错,既有叙述又有实例,谢谢哥们!
作者: 黑马--马超    时间: 2012-7-23 17:03
feigecal 发表于 2012-7-23 16:22
当描述事物时,事物的内部还有事物,就用内部类来描述。内部类可以定义在外部类的成员位置上,也可以定义在 ...

我可能主要就是这里有疑惑,谢谢你的回答!
一个内部类的对象,调用内部类方法的格式




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2