类的继承
super关键字
super关键字可以在子类中调用父类的普通属性、方法和构造方法,避免了子类对象无法访问父类被重写的方法的问题
提示:以下是本篇文章正文内容,下面案例可供参考
super关键字的用法
1.使用super关键字访问父类的成员变量和成员方法。
具体格式如下所示:
super.成员变量
super.成员方法 (参数1,参数2 ...)
代码如下(示例):
//定义Animal类
class Animal{
String name ="牧羊犬" ;
//定义动物叫的方法
void shout() {
System.out.println("动物发出叫声");
}
}
//定义Dog类继承Animal 类
class Dog extends Animal {
//重写父类Animal中的shout()方法,扩大了访问权限
public void shout() {
super.shout(); //调用父类中的shout()方法
System.out.println("汪汪汪……");
}
public void printName() {
System.out.println("名字:" +super.name); //调用父类中的name属性
}
}
//定义测试类
public class test{
public static void main (String[] args) {
Dog dog = new Dog (); //创建Dog类的实例对象
dog.shout(); //调用dog重写的shout()方法
dog.printName(); //调用Dog类中printName()的方法
运行结果如下图所示:
2.使用super关键字访问父类中指定的构造方法
具体格式如下所示:
super (参数1,参数2 ...)
代码如下(示例):
//定义Animal类
class Animal {
private String name;
private int age;
public Animal (String name , int age) {
this.name = name;
this.age = age;
}
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age){
this.age = age;
}
public String info() {
return "名称:"+this.getName()+",年龄:" +this.getAge();
}
}
//定义Dog继承Animal类
class Dog extends Animal {
private String color;
public Dog (String name, int age,String color) {
super(name, age);
this.setColor(color);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
//重写父类的info()方法
public String info() {
return super.info()+ ",颜色:" +this.getColor(); //扩充父类中的方法
}
}
//定义测试类
public class test {
public static void main(String[] args) {
Dog dog = new Dog ("牧羊犬",3,"黑色"); //创建Dog类的实例对象
System.out.println(dog.info());
}
}
运行结果如下图所示:
注意:
通过super()调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。