为什么return getName();第二行和第三行才不会出现“开心工作”?return怎么理解?
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
收起
正在回答 回答被采纳积分+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()方法并没有添加任何输出!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星