黑马程序员技术交流社区

标题: 求解,静态内部类怎么建立一个对象?有代码…… [打印本页]

作者: 彭波    时间: 2013-3-7 21:40
标题: 求解,静态内部类怎么建立一个对象?有代码……
本帖最后由 彭波 于 2013-3-9 13:41 编辑

class TD
{
int y = 6;
  static class Inner //内部类,静态的
{
   static int y = 3;
    void show()
  {
   System.out.println(y);
  }
}
}
class TC
{
public static void main(String[] args)
{
  TD.Inner ti = new TD().new Inner();//这样建立对象是错的,why?
                                     //怎么建立一个新对象??
  ti.show();
}
}
作者: wodeairenw    时间: 2013-3-7 22:11
本帖最后由 wodeairenw 于 2013-3-7 22:59 编辑

静态内部类是无法创建对象的,使用里面的功能可以直接是用类名调用,其实和静态方法的定义差不多,静态类就是当程序一旦被执行,静态类直接被放入方法区,可以直接通过类名进行调用,而不需要建立类的对象。。
更改后代码如下:
class TD
{
int y = 6;
   static class Inner //内部类,静态的
{
    static int y = 3;
    static void  show()//先将show方法静态,因为静态不能访问非静态。
   {
    System.out.println(y);
   }
}
}
class TC
{
public static void main(String[] args)
{
  TD.Inner.show();//然后使用类名调用方法
}
}
作者: 张卫刚    时间: 2013-3-7 22:21
静态内部类就具备static的特性,也就是说静态内部类中的成员必须都是静态的,都是静态的还有必要创建对象吗?
所以可以这样访问new TD.Inner().show();
class TC
{
public static void main(String[] args)
{
  //TD.Inner ti = new TD().new Inner();//这样建立对象是错的,why?
  new TD.Inner().show();                           //怎么建立一个新对象??
  //ti.show();
}
}希望能帮到你
作者: 张洪慊    时间: 2013-3-7 22:24
本帖最后由 张洪慊 于 2013-3-7 22:27 编辑

1.用 new TD.Inner();创建对象,我这里创建一个匿名对象
2.我 尝试过 用 new TD().new Inner(); 会报 限定的新静态类
   按说该内部类在成员位置上,虽然是静态的,但也可以通过外部类对象创建
   这个原因一直没找到.等高手.
/*
TD.Inner ti = new TD().new Inner();
ti.show();
*/
以上可以用:new TD.Inner().show();
作者: 彭波    时间: 2013-3-9 13:39
wodeairenw 发表于 2013-3-7 22:11
静态内部类是无法创建对象的,使用里面的功能可以直接是用类名调用,其实和静态方法的定义差不多,静态类就 ...

有道理,我失误了,基础不扎实




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