黑马程序员技术交流社区
标题:
此处不解
[打印本页]
作者:
张海涛
时间:
2012-12-11 00:50
标题:
此处不解
本帖最后由 张海涛 于 2012-12-11 01:07 编辑
57行为什么必须要加static,不加就报错??
abstract class Animal
{
public abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("eat fish");
}
public void catchMoust()
{
System.out.println("catch mouse");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("eat bone");
}
public void LookHome()
{
System.out.println("look home");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("si liao");
}
public void gongDi()
{
System.out.println("gong di");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
/*
Cat c1 = new Cat();
Cat c2 = new Cat();
Pig p = new Pig();
function(c1);
function(new Dog());
function(p);
*/
//Animal c = new Cat();
//c.eat();
function(new Cat());
function(new Dog());
function(new Pig());
}
public static void function(Animal a)//这里为什么必须要加static
{
a.eat();
}
/*
public static void function(Cat c)
{
c.eat();
}
public static void function(Dog d)
{
d.eat();
}
public static void function(Pig p)
{
p.eat();
}
*/
}
复制代码
作者:
颜峰
时间:
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