题目的主要信息:
- 有父类 Base,内部定义了 x、y 属性
- 有子类 Sub,继承自父类 Base,子类新增了一个 z 属性,并且定义了 calculate 方法,在此方法内计算了父类和子类中 x、y、z 属性三者的乘积
- 请补全子类构造方法的初始化逻辑,使得该计算逻辑能够正确执行
具体做法:
我们只需要补全子类的构造函数。父类Base的变量都是private类型,不允许外界访问,因此我们我们只能调用父类的构造函数来初始化x和y变量,然后变量z初始化直接赋值即可。子类调用父类的构造函数我们直接将: Base(x, y)
加在子类构造函数参数后面即可。
#include <iostream>
using namespace std;
class Base {
private:
int x;
int y;
public:
Base(int x, int y) {
this->x = x;
this->y = y;
}
int getX() {
return x;
}
int getY() {
return y;
}
};
class Sub : public Base {
private:
int z;
public:
Sub(int x, int y, int z) : Base(x, y) { //先继承父类的构造函数
// write your code here
this->z = z; //再构造自己的成员变量
}
int getZ() {
return z;
}
int calculate() {
return Base::getX() * Base::getY() * this->getZ();
}
};
int main() {
int x, y, z;
cin >> x;
cin >> y;
cin >> z;
Sub sub(x, y, z);
cout << sub.calculate() << endl;
return 0;
}
复杂度分析:
- 时间复杂度:O(1),直接计算,常数时间
- 空间复杂度:O(1),无额外空间