问题 填空题

[说明]
以下程序的功能是计算三角形、矩形和正方形的面积并输出,程序由5个类组成:AreaTest是主类,类Trianlge、Rectangle和Square分别表示三角形、矩形和正方形,抽象类Figure提供了一个计算面积的抽象方法。
[程序]
public class AreaTest
public static void main(String args [])
Figure [] figures= new Triangle (2,3,3) ,new Rectangle (5,8) ,new Square (5) ;
for (int i=0; 1< figures .length; i++)
System. out .println (figures [i] +"area=" +figures [i]. getArea ());



public abstract class Figure
public abstract double getArea() ;

public class Rectangle extends (1)
double height;
double width;
public Rectangle(double height, double width)
this .height=height;
this.width=width;

public String toString ()
return "Rectangle: height= "+height+" , width= "+width+":";

public double getArea ()
return (2) ;

class Square extends (3)
public Square(double width)
(4) ;

public string toString ()
return "Square: width= "+width+" : " ;


class Triangle extends (5)
double la;
double lb;
double lc;
public Triangle(double la,double lb, double lc)
this.la=la; this.lb=lb; this.lc=lc;

public String toString()
return "Triangle : sides= "+la+" , "+lb+" , " +lc+" : " ;

public double getArea ()
double s= (la+lb+lc)/2.0;
return Math. sqrt (s* (s-la) * (s-lb) * (s-lc)) ;

答案

参考答案:Figure

解析: 本题考查的是Java面向对象程序设计中继承、抽象类的概念和应用。
由题意可知,题中程序的功能是计算不同图形的面积。题中已指明类Figure是抽象类,所以Figure只能作为基类。因此,空(1)处应填:Figure。分析一下程序可知,类Rectangle直接继承类Figure,将实现Figure中的抽象方法getArea(),长方形的面积是长×宽,显然,空(2)处应填:height*width。空(3)处填的是类Square的直接父类的类名,类Figure和类Rectangle均有可能是类Square的直接父类,仔细研究一下程序可发现,类Square没有给出方法getArea()的新的定义,所以Figure不可能是其直接父类,因此空(3)处应填Rectangle。空(4)处是计算正方形的面积,显然此处是要调用其父类的getArea()方法,类Rectangle中的getArea()方法需两个参数,故需将正方形的边长分别赋值给长方形的长和宽,此时还需借助Java中super函数,利用super函数可将类Square中的width传递给Rectangle中的height和width,所以空(4)处应填:super(width,width)。空(5)处应填类Triangle的直接父类的类名,程序中类Triangle已给出getArea()的新的定义,故Triangle的直接父类是Figureo所以空(5)处应填:Figureo经如上分析后,四个类的继承关系便很显然了。类Figure.类Rectangle、类Square、类Triangle的继承关系如图6-1所示。


考生在解答此类题型时,应搞清楚类的继承关系,这是题目的难点,也是关键点。继承关系可从抽象类、方法的实现等角度来判断。

选择题
单项选择题