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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马刘岩 中级黑马   /  2012-12-13 10:13  /  1287 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Outer//这是外部类
  2. {

  3. private static int num=4;
  4. int n=6;


  5. void fun()//外部类成员
  6. {
  7. final int n=9;
  8. class Inner//这是内部类
  9. {
  10.   void pri()//内部类方法
  11.   {
  12.    System.out.println(Outer.this.n);//打印外部类成员变量
  13.   }
  14.   
  15. }
  16. new Inner().pri();//实例化内部类并调用内部类方法
  17. System.out.println(n);//打印内部类成员变量
  18. }

  19. }
  20. class InnerClassDemo
  21. {
  22. public static void main(String[] args)
  23. {
  24.   Outer o=new Outer();
  25.   o.fun();

  26. }
  27. }
复制代码
我这里有一个问题,可不可以把内部类的实例化放在主函数中进行?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 张胜格 于 2012-12-13 11:20 编辑

一般可以啊,要在外部直接使用内部类的实例化对象的一般格式为:
外部类.内部类 内部类对象=外部类实例.new内部类实例()
但是具体到这道题是不能的,因为这个内部类定义在了外部类的方法中,
只有在调用实例化外部类并调用外部类的方法时此内部类才能被看见,所以不能用上面的方法调用,
也不能在外部类定义之外的地方调用
回复 使用道具 举报
张胜格 发表于 2012-12-13 10:55
一般可以啊,要在外部直接使用内部类的实例化对象的一般格式为:
外部类.内部类 内部类对象=外部类实例.new ...

明白了,灰常感谢!
回复 使用道具 举报
内部类可以访问包装他的外部类的所有,方法和属性,包括私有方法,但是哪怕对同一个包下面其他类来说,内部类是隐藏的,
也就是说,如果要访问内部类,就必须先要得到他的外部包装类,得到那个句柄之后在new 内部类,就可以调用他的方法了,
总之要知道,想调用内部类,就必须先实例化外部类,不然是访问不了内部类的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马