public class Animal
{
//定义动物叫的方法
void shout()
{
System.out.println("动物发出叫声");
}
}
//定义Dog类继承Animal类
class Dog extends Animal
{
void shout()
{
System.out.println("汪汪......");
}
}
定义测试类
public class AnimalTest
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Dog dog=new Dog();
dog.shout();
}
}
当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法;
使用super关键字调用父类成员变量和成员方法,具体格式如下;
super.成员变量
super.成员方法(参数1,参数2,、、、)
public class AnimalToday
{
String name="动物";
//定义动物的叫法
void shout()
{
System.out.println("动物发出叫声");
}
}
//定义Dog类继承Animal类
class Dog extends AnimalToday
{
String name="犬类";
//重写父类的shout()方法
void shout()
{
super.shout();//访问父类的成员方法
}
//打印name的方法
void printName()
{
System.out.println("name="+super.name);//访问父类的成员变量
}
}
测试类
public class AnimalTodayTest
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Dog dog=new Dog();
dog.shout();
dog.printName();
}
}
如何使用super关键字来调用父类的构造方法
public class AnimalToday
{
public AnimalToday(String name)
{
System.out.println("我是一只"+name);
}
}
//定义Dog类继承Animal类
class Dog extends AnimalToday
{
public Dog()
{
super("沙皮狗");//调用父类有参的构造方法
}
}
测试类
public class AnimalTodayTest
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Dog dog=new Dog();
}
}
注意:通过super关键字调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。否则程序在编译期间就会报错。