主题:有关super的一个奇怪问题
以下程序代码中子类调用父类方法的语句super.breathe()放在子类方法体外为什么编译报错,放在方法体内就可以通过?super语句是必须要放在方法体内吗?
代码如下:
class AnimalTest
{
void breathe()
{
System.out.println("animal breathe");
}
}
class Fish extends AnimalTest
{
super.breathe();
void breathe()
{
System.out.println("fish breathe");
}
}
class Test
{
public static void main(String[] args)
{
AnimalTest at=new AnimalTest();
Fish fh=new Fish();
at.breathe();
fh.breathe();
}
}
编译器报错如下:Animaltest.java:12: 非法的类型开始
super.breathe();
^
Animaltest.java:12: 方法声明无效;需要返回类型
super.breathe();
^
代码如下:
class AnimalTest
{
void breathe()
{
System.out.println("animal breathe");
}
}
class Fish extends AnimalTest
{
super.breathe();
void breathe()
{
System.out.println("fish breathe");
}
}
class Test
{
public static void main(String[] args)
{
AnimalTest at=new AnimalTest();
Fish fh=new Fish();
at.breathe();
fh.breathe();
}
}
编译器报错如下:Animaltest.java:12: 非法的类型开始
super.breathe();
^
Animaltest.java:12: 方法声明无效;需要返回类型
super.breathe();
^