在2-23编程里使用super

在2-23编程里使用super

父类:

public class NonMotor {
    // 私有属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个)
    private String brand;
    private String color;
    private int wheel;
    private int chair;

    // 无参构造方法
    public NonMotor() {

    }

    // 双参构造方法,完成对品牌和颜色的赋值
    public NonMotor(String brand, String color) {
        this.setBrand(brand);
        this.setColor(color);
    }

// 公有的get***/set***方法完成属性封装
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return this.brand;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getColor() {
        return this.color;
    }


子类:

public class Bicycle extends NonMotor {
    // 在构造方法中调用父类多参构造,完成属性赋值
    public Bicycle() {

    }

    public Bicycle(String color, String brand) {
        super(brand, color);
    }

    // 运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。
    public String info() {
        String str = "这是一辆" + super.getColor() + "颜色的," + super.getBrand() + "牌的自行车。";
        return str;
    }

}

测试类;

public class Test {
    public static void main(String[] args) {
        NonMotor one = new NonMotor("天宇", "红",);
        Bicycle two = new Bicycle("黄", "捷安特");
        System.out.println("自行车类信息测试:" + two.info());

老师,我在这里贴了一部分代码,运行上应该没有问题,足够说明我的问题即可。

在子类介绍信息的方法info里,对于信息介绍的写法:

 String str = "这是一辆" + super.getColor() + "颜色的," + super.getBrand() + "牌的自行车。";

我的疑问在super.getColocr()和super.getBrand()上,以往我一直使用this去调用父类方法,但在此处,我使用了super,以我的理解,this代表调用info方法的当前对象,说白了就是two.getColor()、two.getBrand()。super是调用父类方法,它不像this指代调用方法的当前对象,谁知道是哪个对象调用的super,老师,我困惑在这里。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!你先看看我在这个问答下的回复,

http://class.imooc.com/course/qadetail/113362

如果还有问题,你在现在这个问答下再提问。

另外,你这里不要用super去调用get方法,用this调用。要分清this和super的使用场景。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 鱼儿0001 提问者 #1
    看了老师发的链接。 我在这里使用super调用get方法。然后在eclipse上运行来看并没有错误。 老师,这说明什么呢?是super弄清了是two这个对象在调用父类方法吗?
    2019-05-05 16:21:19
  • 好帮手慕珊 回复 提问者 鱼儿0001 #2
    你好!之所以不报错,是因为父类中有getColor()方法,你用super去调用父类的方法是允许的。可以理解成super弄清了two这个对象在调用父类方法。祝学习愉快!
    2019-05-05 16:42:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师