该代码为什么会报错:class People { int f(int m, int n) { return 100; } float f(int m,int n){ return 100F+m*n; } }
时间: 2024-03-12 22:49:07 浏览: 151
在该代码中,定义了两个同名且参数列表相同的 `f` 方法,但它们的返回值类型不同,一个方法返回 `int`,另一个方法返回 `float`,这违反了 Java 中方法的重载规则。在 Java 中,方法的重载要求方法名相同,但参数列表必须不同或者返回值类型不同。因此,该代码会报错,Java 编译器无法确定要调用哪个方法。
要解决这个问题,可以修改其中一个方法的参数列表,或者使用不同的方法名。例如:
```
class People {
int f(int m, int n) {
return 100;
}
float g(int m, int n) {
return 100F + m * n;
}
}
```
或者:
```
class People {
int f(int m, int n) {
return 100;
}
float f2(int m, int n) {
return 100F + m * n;
}
}
```
这样就可以避免方法重载导致的编译错误。
相关问题
R6-1 写出派生类构造方法(C++) 分数 10 全屏浏览题目 切换布局 作者 周强 单位 青岛大学 裁判测试程序样例中展示的是一段定义基类People、派生类Student以及测试两个类的相关C++代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。 函数接口定义: 提示: 观察类的定义和main方法中的测试代码,补全缺失的代码。 裁判测试程序样例: 注意:真正的测试程序中使用的数据可能与样例测试程序中不同,但仅按照样例中的格式调用相关函数。 #include <iostream>
class People{
protected:
char *name;
int age;
public:
People(char *n, int a){
name = new char[strlen(n)+1];
strcpy(name, n);
age = a;
}
~People(){
delete []name;
}
};
class Student: public People{
private:
float score;
public:
// 请在此处补充派生类构造方法
Student(char *n, int a, float s): People(n, a){
score = s;
}
~Student(){}
};
int main(){
Student stu("Tom", 16, 90.5);
return 0;
}
定义一个类Student,属性有name、age、weight、height、course。要求继承类People。定义成员方法total_score(self,course)计算总成绩。course为列表类型,元素为语文、数学、英语和理综。设计一个程序要求可以显示菜单1、计算总成绩,2、计算BMI。选择1则在控制台输入学生姓名、语文、数学、英语和理综,输出总成绩。选择2则在控制台输入姓名、年龄、体重、身高(米),然后输出BMI并且给出合理建议。 Python代码
可以参考以下代码实现:
```python
class People:
def __init__(self, name, age, weight, height):
self.name = name
self.age = age
self.weight = weight
self.height = height
def bmi(self):
return round(self.weight / (self.height ** 2), 2)
def advice(self):
bmi = self.bmi()
if bmi < 18.5:
return "您的体重过轻,请注意营养均衡。"
elif bmi < 24:
return "您的体重正常,继续保持。"
elif bmi < 28:
return "您的体重过重,请注意控制饮食。"
else:
return "您的体重肥胖,建议您进行减肥。"
class Student(People):
def __init__(self, name, age, weight, height, course):
super().__init__(name, age, weight, height)
self.course = course
def total_score(self):
return sum(self.course)
def main():
while True:
print("请输入数字选择功能:1、计算总成绩,2、计算BMI,0、退出")
choice = input()
if choice == "0":
break
elif choice == "1":
name = input("请输入学生姓名:")
course = []
for c in ["语文", "数学", "英语", "理综"]:
course.append(int(input(f"请输入{name}的{c}成绩:")))
student = Student(name, 0, 0, 0, course)
print(f"{name}的总成绩为:{student.total_score()}")
elif choice == "2":
name = input("请输入学生姓名:")
age = int(input("请输入学生年龄:"))
weight = float(input("请输入学生体重(千克):"))
height = float(input("请输入学生身高(米):"))
student = People(name, age, weight, height)
print(f"{name}的BMI指数为:{student.bmi()},{student.advice()}")
if __name__ == '__main__':
main()
```
运行程序后,会显示以下菜单:
```
请输入数字选择功能:1、计算总成绩,2、计算BMI,0、退出
```
输入相应数字即可选择对应功能。如果选择1,则需要输入学生的姓名和各科成绩,程序会输出总成绩。如果选择2,则需要输入学生的姓名、年龄、体重和身高,程序会输出BMI指数和相应建议。如果输入0,则程序退出。
阅读全文