黑马程序员技术交流社区

标题: 此处不解 [打印本页]

作者: 张海涛    时间: 2012-12-11 00:50
标题: 此处不解
本帖最后由 张海涛 于 2012-12-11 01:07 编辑

57行为什么必须要加static,不加就报错??
  1. abstract class Animal
  2. {
  3.         public abstract void eat();
  4. }
  5. class Cat extends Animal
  6. {
  7.         public void eat()
  8.         {
  9.                 System.out.println("eat fish");
  10.         }
  11.         public void catchMoust()
  12.         {
  13.                 System.out.println("catch mouse");
  14.         }
  15. }
  16. class Dog extends Animal
  17. {
  18.         public void eat()
  19.         {
  20.                 System.out.println("eat bone");
  21.         }
  22.         public void LookHome()
  23.         {
  24.                 System.out.println("look home");
  25.         }
  26. }
  27. class Pig extends Animal
  28. {
  29.         public void eat()
  30.         {
  31.                 System.out.println("si liao");
  32.         }
  33.         public void gongDi()
  34.         {
  35.                 System.out.println("gong di");
  36.         }
  37. }
  38. class DuoTaiDemo
  39. {
  40.         public static void main(String[] args)
  41.         {
  42.                 /*
  43.                 Cat c1 = new Cat();
  44.                 Cat c2 = new Cat();
  45.                 Pig p = new Pig();
  46.                 function(c1);
  47.                 function(new Dog());
  48.                 function(p);
  49.                 */
  50.                 //Animal c = new Cat();
  51.                 //c.eat();
  52.                 function(new Cat());
  53.                 function(new Dog());
  54.                 function(new Pig());
  55.         }
  56.         
  57.         public static void function(Animal a)//这里为什么必须要加static
  58.         {
  59.                 a.eat();
  60.         }
  61.         /*
  62.         public static void function(Cat c)
  63.         {
  64.                 c.eat();
  65.         }
  66.         public static void function(Dog d)
  67.         {
  68.                 d.eat();
  69.         }
  70.         public static void function(Pig p)
  71.         {
  72.                 p.eat();
  73.         }
  74.         */
  75. }
复制代码

作者: 颜峰    时间: 2012-12-11 00:56
main方法是静态方法,在静态方法中不能直接调用非静态方法,所以得加。如果不想加static就得在main方法中用当前类的对象调用function方法
作者: 张海涛    时间: 2012-12-11 01:07
颜峰 发表于 2012-12-11 00:56
main方法是静态方法,在静态方法中不能直接调用非静态方法,所以得加。如果不想加static就得在main方法中用 ...

哦,是的,我把主函数main有static忘记了,在前面的代码找了半天也没定义过静态方法或者属性啊,怎么这里必须加静态呢,还郁闷了,原来是主函数这里的问题,好的,知道了!




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