黑马程序员技术交流社区
标题:
求解,静态内部类怎么建立一个对象?有代码……
[打印本页]
作者:
彭波
时间:
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