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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蔡兆军 中级黑马   /  2012-11-24 16:09  /  1209 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Outer
{
private static  int x = 3;

static class Inner//静态内部类
{
  static void function()
  {
   System.out.println("innner :"+x);
  }
}
static class Inner2
{
  void show()
  {
   System.out.println("inner2 show");
  }
}
public static void method()
{
  Inner.function();
  new Inner2().show();//Inner2 是静态类,静态类不能被new,但是这行先new了一个Inner2在调用show。
}
}

评分

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

查看全部评分

4 个回复

倒序浏览
外部类访问静态内部类的静态方法可以直接用内部类名调用
外部类要调用静态内部类的非静态方法必须创建内部类对象

评分

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

查看全部评分

回复 使用道具 举报
你想错了。静态类是可以被实例化的,也就是可以被new  (接口和抽象类才不可以被new)。
  
外部类和外部类以外的想要调用静态内部类中的非静态成员,就需要把静态内部类实例化才可以。
                                                                                        正确求表扬~~{:soso_e200:}
                                                                                                                                    错误求改正~~

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
1、静态类可以被实例化
2、类中的非静态成员,需要对象才能访问,所以要new 一个对象。所以调用非静态成员show() 只能用 new Inner2().show();
3、对于静态成员,则可以直接调用。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
明白了!{:soso_e104:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马