A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马--马超 初级黑马   /  2012-7-23 15:20  /  1694 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cookie110 于 2012-7-24 13:41 编辑

  • 内部类与外部类有什么区别,在实际编程中分别有什么用途?
  • 如何使用一个外部类调用另外一个外部类的内部类中的一个方法?

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 新手,继续努力,加油

查看全部评分

4 个回复

倒序浏览
我根据我的理解来给你回答一下吧
第一个问题:内部类是外部类的一个成员,内部类中不能定义静态成员,编译后,内部类也有自己的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类的对象。也就是这个内部类对象是依赖外部类对象存在的

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 feigecal 于 2012-7-23 17:06 编辑

当描述事物时,事物的内部还有事物,就用内部类来描述。内部类可以定义在外部类的成员位置上,也可以定义在外部类的方法内部即局部内部类。内部类保留着隐匿的外部类的引用Outer.this,所以可以直接访问外部类的成员变量包括私有的。外部类想要访问内部类的方法就必须new  一个内部类的对象,调用内部类方法的格式为new Outer().new Inter().function()。外部类只可以被public和默认修饰符修饰,但内部类可以被任意修饰成员的修饰符修饰,可以被私有也可以被静态,当内部类被静态后可以直接用外部类的名调用,调用内部类方法的格式为new Outer.Inter().function(),但是静态内部类只能访问外部类的静态成员,出现了访问局限。另外局部内部只能访问被final修饰的局部变量。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
田向向 发表于 2012-7-23 16:18
我根据我的理解来给你回答一下吧
第一个问题:内部类是外部类的一个成员,内部类中不能定义静态成员,编译 ...

不错不错,既有叙述又有实例,谢谢哥们!
回复 使用道具 举报
feigecal 发表于 2012-7-23 16:22
当描述事物时,事物的内部还有事物,就用内部类来描述。内部类可以定义在外部类的成员位置上,也可以定义在 ...

我可能主要就是这里有疑惑,谢谢你的回答!
一个内部类的对象,调用内部类方法的格式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马