关于重写方法的问题
public class Work {
//此类为工作类(父类),用于存放共有属性(工作名称)和共有方法(工作内容描述)
//共有属性
private String workname;
//无参构造
public void Work() {
}
//全参构造用于传参
public void Work(String workname) {
this.workname=workname;
}
//get/set方法
public void setWorkname(String workname) {
this.workname=workname;
}
public String getWorkname() {
return this.workname;
}
//共有的工作描述方法
public void say() {
System.out.println("父类信息测试:开心工作!");
}
//测试类的工作描述
public void testsay(int exnum,int bugnum) {
System.out.println(this.workname+"的日报是:几天编写了"+exnum+"个测试用例,发现了"+bugnum+"个bug");
}
public void buildsay(int exnum,int bugnum) {
System.out.println(this.workname+"的日报是:几天编写了"+exnum+"行代码,目前仍然有"+bugnum+"个bug没有解决");
}
}
相关代码:
public class TestWork extends Work {
//此类为测试工作类(工作类的子类A,继承工作类(Work))
//建立测试工作类的特有属性
private int exnum;//测试用例个数
private int bugnum;//发现的bug数量
//get、set方法
public int getExnum() {
return exnum;
}
public void setExnum(int exnum) {
this.exnum = exnum;
}
public int getBugnum() {
return bugnum;
}
public void setBugnum(int bugnum) {
this.bugnum = bugnum;
}
//重写父类中测试工作类描述的方法
public void testsay() {
System.out.println(this.getWorkname()+"的日报是:几天编写了"+this.exnum+"个测试用例,发现了"+this.bugnum+"个bug");
}
}
相关代码:
package com.lin.work;
public class BuildWork extends Work{
//此类为工作类(Work)的子类--研发工作类
//研发类的属性
private int codenum;//代码行数
private int bugnum;//bug数量
public int getCodenum() {
return codenum;
}
public void setCodenum(int codenum) {
this.codenum = codenum;
}
public int getBugnum() {
return bugnum;
}
public void setBugnum(int bugnum) {
this.bugnum = bugnum;
}
//重写的父类中的方法
public void buildsay() {
System.out.println(this.getWorkname()+"的日报是:几天编写了"+this.codenum+"行代码,目前仍然有"+this.bugnum+"个bug没有解决");
}
}
相关代码:
问题描述:老师您好!以上为我的代码,在代码编写中我遇到问题如下:
1.我理解的继承是子类对象使用父类中的属性和方法,但是编程练习中的思路分析中,没有说要在父类中编写两个工作日志描述的编写,而是在定义工作类和研发类之后,进行继承,继承后,再重写运行方法,进行日报描述,那为什么需要重写呢,我有点不明白练习中重写的目的是什么。
2.在我的代码中我也分别在两个子类中进行了方法重写(父类是带参数的,重写后的是无返回值的),但是我在测试代码中无法使用重写的代码,只能使用父类中的带参数的方法,请问这是什么原因呢?
正在回答 回答被采纳积分+1
同学你好,针对同学的问题做出如下解答:
1、一般我们将子类共有的特点定义在父类中,但每个子类的的特点又有所不同,所以在父类中定义后,每个子类根据自己特有的特点对父类中定义的方法进行重写。如:
1)测试工作、研发工作都具有工作描述的特点,所以将工作描述的方法定义在父类中。
2)但测试工作、研发工作的工作描述又各不相同,所以需要在子类中对工作描述的方法进行重写,用于覆盖父类中的工作描述方法。
3)重写方法后,当子类对象调用工作描述的方法时,则不再是访问父类中的工作描述方法,而是调用子类重写后的工作描述方法。
2、方法重写要求方法名相同、参数列表也相同,同学代码中方法不构成重写,而是子类中的testsay()与父类中的testsay(int exnum, int bugnum)构成方法的重载。
在子类中可以直接调用不带参的testsay(),也可直接调用带参的testsay(int exnum, int bugnum),不知同学调用的是哪个方法得到的结果与预期效果不一样呢?可参照老师下方对代码的修改建议,修改后再测试运行。
代码的修改建议如下:
1、父类work
1)构造方法需要与类同名且无返回值类型,无参与有参构造方法代码修改如下:

2)无需定义testSay与buildeSay方法,定义一个say()方法用于表示工作表述即可。

2、测试工作类
1)添加无参与全参构造方法,便于在测试类中创建测试工作类的对象

2)重写父类say方法

3、研发工作类
1)添加无参和有参构造方法,便于测试类创建该类的对象

2)重写父类say()方法

3、测试代码及运行结果

4、其他
关于方法的命名问题,如果由一个单词组成,则该单词小写。如果由多个单词组成,则第一个单词小写,从第二个单词开始每个单词的首字母大写。例如testsay应改为testSay。
祝学习愉快~
- 参与学习 人
- 提交作业 8811 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星