class Sa{ int x,y; public void setXy(int x,int y) { this.x=x; this.y=y; } public int result() { return x+y; } } class Sb extends Sa{ int x; public int result(){ super.x=5; x=super.result()/x; return x; } } class Sc { public static void main(String aa[]){ Sa s=new Sa(); s.setXy(5,10); System.out.println("sa result:"+s.result()); Sb s2=new Sb(); s2.x=3; s2.y=10; System.out.println("sb result:"+s2.result()); }}
时间: 2023-07-16 18:11:36 浏览: 163
这段代码定义了三个类:Sa、Sb、Sc。
Sa类有两个成员变量x、y和两个方法setXy和result。setXy方法用于设置x、y的值,result方法返回x+y的结果。
Sb类继承了Sa类,新增了一个成员变量x和一个result方法。result方法重写了Sa类的result方法,首先通过super关键字调用父类的result方法,然后给父类的成员变量x赋值为5。接着将父类的result方法除以子类的成员变量x,最后返回计算结果。
Sc类是程序的入口,创建了一个Sa类对象和一个Sb类对象,并分别调用它们的result方法输出结果。
当执行Sc类的main方法时,输出的结果为:
sa result:15
sb result:1
Sa类的result方法返回了5+10=15,而Sb类的result方法返回了5/3=1。
相关问题
题目 给出下面程序的输出结果#includeusing namespace std;class Simple{int x,y;public:Simple() {x=y=0;}Simple(int i, int j){x=i;y=j;}void copy(Simple&s);void setxy(int i, int j){x=i;y=j;}void print(){cout<};void Simple::copy(Simple&s) {x=s. x;y=s. y;}void func(Simple s1, Simple&s2) {s1. setxy(30,40);s2. setxy(70,80);}void main() {Simple obj1(1,2),obj2;obj2. copy(obj1);func(obj1,obj2);obj1. p rint();obj2. print();}
这段程序的输出结果是:
```
1, 2
30, 40
```
程序的执行过程如下:
1. 定义了一个 Simple 类,其中包含两个私有成员变量 x 和 y,以及两个公有成员函数 copy 和 setxy,以及一个公有成员函数 print,用于输出 x 和 y 的值。
2. 在 main 函数中定义了两个 Simple 类对象 obj1 和 obj2,分别初始化为 (1, 2) 和 (0, 0)。
3. 调用 obj2 的 copy 函数,将 obj1 的值复制给 obj2。
4. 调用了一个名为 func 的全局函数,将 obj1 和 obj2 分别传递给了 s1 和 s2。
5. 在 func 函数中,调用了 s1 的 setxy 函数,将 s1 的值修改为 (30, 40),再调用了 s2 的 setxy 函数,将 s2 的值修改为 (70, 80)。
6. 回到 main 函数,先输出 obj1 的值,即 (1, 2)。
7. 最后输出 obj2 的值,即 (30, 40),因为在 func 函数中,obj2 的值被修改为 (70, 80),但是在调用 copy 函数时,obj2 的值被复制为 obj1 的值,所以最终输出为 (30, 40)。
class Point { //公有成员; public: void setxy(int myx, int myy) { X = myx, Y = myy; } void movexy(int x, int y) { X += x, Y += y; } //受保护成员; protected: int X, Y; }; //创建派生类; class Circle :public Point { public: void setr(int myx, int myy, int myr) { setxy(myx, myy); R = myr; } void display(); protected: int R; }; 解释一下这段代码
这段代码定义了一个基类 Point 和一个派生类 Circle。基类 Point 有两个公有成员函数:setxy() 用于设置点的坐标,movexy() 用于移动点的坐标。它还有一个受保护的成员变量 X 和 Y,用于表示点的坐标。
派生类 Circle 继承自基类 Point,并添加了一个公有成员函数 setr(),用于设置圆的坐标和半径。在 setr() 中,调用了基类的 setxy() 函数来设置圆心的坐标。派生类 Circle 还声明了一个受保护的成员变量 R,用于表示圆的半径。
派生类 Circle 还有一个 display() 函数,但是在代码中没有给出其实现。根据代码的逻辑,display() 函数应该用于显示圆的信息。
总而言之,这段代码实现了一个简单的基类 Point 和派生类 Circle,用于表示点和圆,并提供了一些基本的操作函数。
阅读全文