class Zoo
{
Animal getAnimal() //Animal是一个接口类型
{
return new Animal();
}
}
class Test
{
public static void main(String[] args)
{
Zoo z=new Zoo();
Animal an=z.getAnimal();//Animal是接口,那这句话是不是就不是实例化了呢?
}
}
这里面的getAnimal是非静态的方法,为什么可以在static main中初试化一个接口呢。
{
Animal getAnimal() //Animal是一个接口类型
{
return new Animal();
}
}
class Test
{
public static void main(String[] args)
{
Zoo z=new Zoo();
Animal an=z.getAnimal();//Animal是接口,那这句话是不是就不是实例化了呢?
}
}
这里面的getAnimal是非静态的方法,为什么可以在static main中初试化一个接口呢。
class Zoo
{
Animal getAnimal() //Animal是一个接口类型
{
return new Animal(); //-----------此语句可以通过?接口不可以
}
这段代码是摘出来的,我改的有点仓促
主要的问题是:在静态的main函数中使用了非静态的方法
想问问怎么回事
谢谢楼上几位
真是高手!
是用接口接受具体的实例,这个相当于
Person p = new Person("亚当","男");这里面的getAnimal是非静态的方法,为什么可以在static main中初试化一个接口呢。
-------
class A{
public void fun(){}
public static void main(String args[]){
fun();//这个才是在静态方法中调用非静态方法,你这个是一个具体的实例调用自己本身的方法
}
}
Animal 不可能是接口
return new Animal(); --如果是接口,这句就会报错Animal an=z.getAnimal(); 中getAnimal()确实是非静态方法,
但是他是被类Zoo初始化的对象z调用的,完全不会有问题