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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM朱蛟 高级黑马   /  2013-3-7 16:39  /  1543 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM朱蛟 于 2013-3-7 16:57 编辑

code1:
----------------------------------------


class cmp
{
        public  void kaiji()
        {
        System.out.println("开机");
        }        
        
        public void guanji()
        {
        System.out.println("关机");
        }        
}


class teacher
{
  private String name;
  private cmp pc;
  
  teacher(String name)
  {
          this.name = name;
          pc = new cmp();
  }
  
  public void jiangke()
  {
          cmp.kaiji();
         
          System.out.println("讲课");
          }               
}


class run
{
        public static void main(String[] args)
        {
                teacher t = new teacher("毕老师");
                t.jiangke();
                }
}

5 个回复

倒序浏览
code2:
class Computer
{
       
        public void run()
        {
                System.out.println("电脑运行");
        }
        public void reset()
        {
                System.out.println("电脑重启");       
        }
}

class Teacher
{
        private String name;
        private Computer cmpt;

        Teacher(String name)
        {
                this.name = name;
                cmpt = new Computer();

        }

        public void prelect()
        {
                cmpt.run();
                System.out.println("讲课");
        }
       
}


class ExceptionTest
{
        public static void main(String[] args)
        {
                Teacher t = new Teacher("毕老师");
                t.prelect();
               
        }
}
回复 使用道具 举报
这两段代码我核对了不下5遍   出了名称不同以外我实在找不出哪儿不一样  但是编译的时候CODE1老是过不了编译(虽然找到了解决办法) 但是我始终搞不懂为何CODE2能通过编译  CODE1通不过   希望高人来指点下
回复 使用道具 举报
问题出在这里cmp.kaiji();应该是pc.kaiji();你的开机方法是普通方法 不能用cmp类名直接调用。另外请注意java的语法书写规则,类名的首字母要大写,方法首字母小写第二个单词首字母大写。
回复 使用道具 举报
Code1:
  public void jiangke()
  {
          cmp.kaiji();
         
          System.out.println("讲课");
   }     
cmp是哪个对象?也没创建实例。直接在静态中引用,静态引用非静态方法,当然报错。

Code2:
public void prelect()
        {
                cmpt.run();
                System.out.println("讲课");
        }
cmpt对象你创建了新的实例啊。
这两段代码一样吗?不一样就区别在这个方法里了。
回复 使用道具 举报
  public void jiangke()
  {
          cmp.kaiji();
         
          System.out.println("讲课");
          }               
}
就是变量名写错了,这也是你编码一个不好的习惯,类名首字母大写,就容易区分了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马