super关键字的综合案例

super关键字
1.子类访问直接父类中被覆盖的数据成员。

super.数据成员名;

2.子类访问直接父类中被子类覆写的成员方法。

super.成员方法名(实参列表);

3.子类调用直接父类的构造方法。

super.(参数);
package com.zsh.java;

public class Base {             //父类
    //数据成员
    private String baseX;
    public int baseSubY;
    //构造方法
    public Base(){
    }
    public Base(String baseX,int baseSubY){
        super();
        this.baseX = baseX;
        this.baseSubY = baseSubY;
    }

    //setter,getter方法
    public String getBaseX() {
        return baseX;
    }

    public void setBaseX(String BaseX) {
        this.baseX = BaseX;
    }

    public int getBaseSubY() {
        return baseSubY;
    }

    public void setBaseSubY(int baseSubY) {
        this.baseSubY = baseSubY;
    }

    public String getBase(){ //获得Base数据成员
        return "BaseX:"+this.baseX+",baseSubY"+this.baseSubY;
    }

    public void printInfo(){ //输出父类数据成员
        System.out.println("父类方法,父类中的baseSubY:" + this.baseSubY);
    }
    public void printMSG(String str){ //输出父类成员方法
        System.out.println("父类中的printMSG方法:" + str);
    }
}

package com.zsh.java;

public class Sub extends Base{            //子类
    //数据成员
    public int baseSubY = 2;              //覆盖父类同名数据成员
    //构造方法
    public Sub(){
    }

    public Sub(String baseX, int baseSubY) {
        super(baseX, baseSubY);            //调用父类构造方法
    }

    //settet和getter方法
    @Override
    public int getBaseSubY() {
        return baseSubY;
    }

    @Override
    public void setBaseSubY(int baseSubY) {
        this.baseSubY = baseSubY;
    }

    //功能方法
    public String getSub(){    //获得数据成员信息
        return super.getBase();//调用父类成员方法
    }
    public void printBaseSubY(){
        //super关键字引用父类数据成员
        System.out.println("baseSubY in base:" + super.baseSubY);
        //this关键字引用当前对象的数据成员
        System.out.println("baseSubY in sub:" + this.baseSubY);
    }
    public void printInfo(){     //覆盖父类的成员方法
        System.out.println("子类的方法,子类的baseSubY:" + this.baseSubY);
    }
    public void test(){
        super.printInfo();//super调用父类的成员方法
        this.printInfo();//this调用子类的成员方法
    }
    public void printMSG(String str,int x){//重载父类的成员方法
        System.out.println("子类中的printMSG方法:" + str + "," + x);
    }
}

package com.zsh;

import com.zsh.java.Sub;

public class Demo008 {
    public static void main(String[] args) {
        Sub sub = new Sub("x",1);
        sub.printBaseSubY();
        System.out.println(sub.baseSubY);
        sub.test();
        sub.printMSG("古代文明");//父类的方法
        sub.printMSG("现代文明",1949);//子类的方法
    }
}

结果展示
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值