[说明]
下面程序定义了一个类Point及其成员函数,然后从类Point派生出类Circle及其成员函数。
[Java程序]
class Mainjava
public static void main (String arg[])
Circle c=new Circle(2.5,3.7,4.3);
System.out.println(" X coordinate is "+c.getX()
+"\nRadius is: "+c.get Radius());
(1) ; //设置新的圆心(2,2)
Point pRef=c;
System.out.println("\n Circle printed as a point is : "
+"["+ (2) +"."+ (3) +"]"):
class Point
protected double x,y;
public Point (double a, double b) x = a; y = b;)
void setPoint (double a, double b) x = a; y = b;
final double getX () return x;
final double getY () return y;
class Circle (4)
protected double radius;
public Circle(double r, double a, double b)
(5) ;
radius=r ;
void setRadius (double r) radius=r;
final double getRadius () return radius;
final double area () return 3.14159*radius*radius;
参考答案:super(a,b)
解析: 本题以Java语言为载体,考查面向对象程序设计中的几个重要概念——派生类型,构造函数,以及对象的引用。
首先,根据题中说明Circle类继承自Point,故空(4)处应填extends Pointo而类Point没有默认构造函数,派生类构造函数首先需要初始化基类,方法是在派生类构造函数的第一个语句用super引用调用基类相应派生类,故空(5)处应填super(a,b)。
主函数中空(1)处我们根据题目给出的说明,要求重新设置圆心为(2,2),调用基类设置点的函数setPoint,所以空(1)处应填入c.setPoint(2,2)。最后考察的是对象的引用,派生类对象可以初始化基类引用,在这种情况下,只能访问从相应基类中继承来的成员,而不允许访问从其他基类的成员或在派生类中增加的成员,所以,空(2)处应填入pRef.getX(),空(3)处应填入pRef.getY()。