黑马程序员技术交流社区

标题: 为什么加上this会报错 [打印本页]

作者: 13922919272    时间: 2015-1-18 15:38
标题: 为什么加上this会报错
class  Demo2
{
        public static void main(String[] args)
        {
                 Demo s=Demo.getDemo();

                s.setMoneMin("zhangsan",7);

                String b=s.getMoneMin();
                        System.out.println(b);
               
                int a=s.getMone();
                        System.out.println(a);


        }
       
}
class Demo
{
        private static int min;
        private static String mone;

         private Demo(){}

        private static Demo s=new Demo();

        public static Demo getDemo()
                {
                return s;
        }
        public  void setMoneMin(String mone,int min)//加上静态编译为什么this不能通过
        {
                this.mone=mone;       
                this.min=min;
        }       
        public static String getMoneMin()
        {
                return mone;
               
        }
        public static int getMone()
                {
        return min;
        }


作者: iblackhorse    时间: 2015-1-18 16:07
因为你demo类成员变量是static的,而你方法不是静态的,调用的时候,会报错,非静态的无法调用静态的。保持一致就行了。
作者: Novice.Jin    时间: 2015-1-18 16:16
静态是属于类的~~~~~~~~~~不关对象的事
作者: 碎流    时间: 2015-1-18 16:45
static先诞生了,类还在飘渺无际中....用飘渺无际的对象去调用具体的stati修饰对象,是不是有些不那么实际呀?
作者: 资博仁    时间: 2015-1-18 17:03
各位大神都说有理啊,我来打酱油了
作者: 全是爱    时间: 2015-1-18 22:53
static类型的变量是类变量,随着类的加载而加载,优先于对象而存在,毕老师讲了吧!
作者: 13922919272    时间: 2015-1-18 22:56
全是爱 发表于 2015-1-18 22:53
static类型的变量是类变量,随着类的加载而加载,优先于对象而存在,毕老师讲了吧! ...

先存在 我再用后存在的对象去调用 这是可以的吧?这毕老师好像也讲了
作者: '丫头片子'    时间: 2015-1-18 23:00
this是指的是new出来的对象,你这个方法如果加上static的话,就表示这个方法先于对象而存在所以编译就不会通过的啊
作者: 全是爱    时间: 2015-1-19 09:21
13922919272 发表于 2015-1-18 22:56
先存在 我再用后存在的对象去调用 这是可以的吧?这毕老师好像也讲了

什么叫后存在的对象?这话听着好别扭,不过也是对的吧。。。。




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