免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1605 | 回复: 5
打印 上一主题 下一主题

请教关于类加载的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-06 23:40 |只看该作者 |倒序浏览
public class MainTest
{
        private LockTest lock;
        class LockTest
        {
                String name;
                public LockTest()
                {
                        name = "zhangsan";
                }
        }

        public static void main(String[] args)
        {
                lock = new LockTest();

        }

}
当这样写时,会提示“把LockTest”设为static 类型,我也知道在静态方法中不可以使用实例变量,但不知道为什么不可以?
下面这样写就不会出错了,为什么呢?请高手指点,非常感谢!
public class MainTest
{
        private LockTest lock;
        class LockTest
        {
                String name;
                public LockTest()
                {
                        name = "zhangsan";
                }
        }
        public MainTest()
        {
                lock = new LockTest();
        }

        public static void main(String[] args)
        {
                MainTest tt = new MainTest();

        }

论坛徽章:
0
2 [报告]
发表于 2006-11-07 09:17 |只看该作者
内部类的实例化方法要求外部类的一个实例,使内部类能在那个实例的上下文中创建。
Class Outer.Inner i = new Outer().new Inner();

[ 本帖最后由 ilcj 于 2006-11-7 09:18 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-11-10 22:34 |只看该作者
非静态的方法是属于对象,必需要有对像它才有意义,才有存在的载体.
而静态方法则是属于类的,不需要对象也存在,也可以使用.

试想在静态方法中用了非静态的成员后会有个什么后果:
  对象不存 ,你便引用了对像中的成员.

这是不合理的.

论坛徽章:
0
4 [报告]
发表于 2006-11-11 00:03 |只看该作者
静态方法如  public static void main(String[] args)  别认为写在哪里就是那个类的方法. 这是不对的.
静态方法写在哪里都可以. 它和类没什么关系.

论坛徽章:
0
5 [报告]
发表于 2006-11-11 12:22 |只看该作者
问题在这里:
public static void main(String[] args)
        {
                lock = new LockTest();

        }

那么你的这个lock是怎么定义的呢?
private LockTest lock;

问题来了:static方法里面使用的变量必须是static的,可是你的这个lock不是static的,所以出错了。

论坛徽章:
0
6 [报告]
发表于 2006-11-11 21:03 |只看该作者
呵呵...!!
支持5楼大大...!!

静态的变量的初始化优先于类变量....!!
由于初始化顺序不一样,所以用已经初始化的静态main()方法调用未被初始化变量,一定是会报错的....!!

[ 本帖最后由 夜夜呆 于 2006-11-11 22:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP