Java学习


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()调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值