为什么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
收起
正在回答 回答被采纳积分+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积分~
来为老师/同学的回答评分吧