为什么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 星