super可以在子类中调用父类的构造方法,省下很多代码。例如:
abstract class Animal
{
public String name;
public int age;
public int weight;
Animal(String aname,int aage,int aweight)
{
name = aname;
age = aage;
weight = aweight;
}
public void showInfo(){
System.out.println("名字:"+name+" 年龄:"+age+" 体重:"+weight);
}
abstract void move();
abstract void eat();
}
class Fish extends Animal
{
String name;
int age;
int weight;
Fish(String name,int age,int weight)
{
super(name,age,weight);
}
void move(){
System.out.println("Fish move()");
}
void eat(){
System.out.println("Fish eat()");
}
}
public class TestAnimal
{
public static void main(String args[])
{
Fish fish = new Fish("seafish",2,10);
fish.move();
fish.eat();
fish.showInfo();
}
}
运行结果:Fish move()
Fish eat()
名字:seafish 年龄:2 体重:10
类fish不能再定义showInfo(),不然会认为子类要重载,会出错。子类中的成员变量或方法名优先级高,子类的同名成员变量或方法就隐藏了父类的成员变量或方法,如果想要使用父类中的这个成员变量或方法,就需要用到super.