为什么return getName();第二行和第三行才不会出现“开心工作”?return怎么理解?

为什么return getName();第二行和第三行才不会出现“开心工作”?return怎么理解?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class Work {
    private String name;
 
    public Work() {
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Work(String name) {
        this.setName(name);
    }
 
    public String work() {
        System.out.println("开心工作");
        return getName();
    }
}
public class DevelopmentWork extends Work {
    private int TestHang;
    private int TestBug;
 
    public int getTestHang() {
        return TestHang;
    }
 
    public void setTestHang(int testHang) {
        TestHang = testHang;
    }
 
    public int getTestBug() {
        return TestBug;
    }
 
    public void setTestBug(int testBug) {
        TestBug = testBug;
    }
 
    public String Work() {
        System.out.println(this.getName() + "的日报是:" "今天编写了" this.getTestHang() + "行代码," "目前仍有" this.getTestBug()
                "个bug" "没有解决");
        return getName();
    }
 
}
public class Testwork extends Work {
    private int TestNum;
    private int TestBug;
 
    public int getTestNum() {
        return TestNum;
    }
 
    public void setTestNum(int testNum) {
        TestNum = testNum;
    }
 
    public int getTestBug() {
        return TestBug;
    }
 
    public void setTestBug(int testBug) {
        TestBug = testBug;
    }
 
    public String Work() {
        System.out.println(
                this.getName() + "的日报是:" "今天编写了" this.getTestNum() + "个测试用例," "发现了" this.getTestBug() + "个bug");
        return getName();
    }
 
}
public class Test1 {
    public static void main(String[] args) {
        System.out.print("父类信息测试:");
        Work one = new Work();
        one.work();
        System.out.print("测试工作类信息测试:");
        Testwork two = new Testwork();
        two.setName("测试工作");
        two.setTestNum(10);
        two.setTestBug(5);
        two.Work();
        System.out.print("研发工作类信息测试:");
        DevelopmentWork three = new DevelopmentWork();
        three.setName("研发工作");
        three.setTestHang(1000);
        three.setTestBug(10);
        three.Work();
    }
}


正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2019-05-18 10:35:17

同学你好,非常抱歉,同学贴出的代码中,老师没有注意到同学的一个错误:

1、那就是同学在父类Work中定义的是小写字母的work方法,但是在子类DevelopmentWork和Testwork中定义的是大写的Work方法,java是严格区分大小写的语言,所以父类的work与子类的Work不存在重写和重载等继承关系,Work方法是子类特有的方法!

2、当修改子类中的返回值为  return work();时, 在测试类中就调用子类的Work方法,先执行方法中的输出语句,然后再执行return 语句中的 work方法,就会先输出Work方法中的输出语句,再执行work方法中的输出语句"开心工作"!

3、当修改子类中的返回语句为 return  getName();时,在测试类中就调用子类的Work方法,先执行方法中的输出语句,然后再执行return 语句中的 getName()方法,就会先输出Work方法中的输出语句,再执行getName()方法中的输出语句,但是getName()方法中,并没有name的赋值,也就获取不到name的属性,所以getName()方法并没有添加任何输出!

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

  • 提问者 慕标7429059 #1
    谢谢老师~~说的很清楚了
    2019-05-18 14:32:59
好帮手慕小班 2019-05-16 17:29:04

同学你好,1、这里是问的是测试工作类和研发工作类为什么没有输出开心工作吗?   原因是:这里“开心工作”是一个输出语句在Work类中的work方法,测试工作类和研发工作类继承Work并重写了work方法,所以不会出现父类的方法中开心工作的语句!

2、return是将内容返回,是方法的返回值。例如:  public  int  sum(int a,int b){ return  a+b;}这里就是将a的值加上b的值就是方法的返回值。

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


  • 提问者 慕标7429059 #1
    return getName();第二行第三行不会出现“开心工作”,但是如果return work();就会出现 为什么return getName不会出现呢?
    2019-05-17 19:05:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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