📅  最后修改于: 2023-12-03 14:58:32.192000             🧑  作者: Mango
本题为 GATE-CS-2017(套装2)中的第 50 题,考查面向对象编程思想和Java语言的基本知识。
设有一个Java接口Shape
,它有一个无参待实现的方法void draw()
,表示该接口代表的形状要进行绘制操作。
又有一个Java抽象类TwoDShape
,它实现了Shape
接口,有两个私有成员变量double width
和double height
,表示该类代表的二维形状的宽度和高度。
现在,要定义两个Java类Rectangle
和Triangle
,分别继承自TwoDShape
类,分别表示矩形和三角形。
请根据以上描述,编写符合要求的Java类。
本题考查了Java语言中的面向对象编程思想和基础语法。
通过定义一个接口Shape
和一个抽象类TwoDShape
,实现了对绘制操作和二维形状的基本封装。
在继承TwoDShape
类的过程中,通过定义不同的构造函数和重写绘制方法draw()
,实现了对矩形和三角形这两种不同形状的拓展。
此外,通过在类定义中添加@Override
注解,明确了该方法是对父类方法的重写。
public interface Shape {
void draw();
}
abstract public class TwoDShape implements Shape {
private double width;
private double height;
public TwoDShape(double w, double h) {
width = w;
height = h;
}
public TwoDShape() {
width = height = 0.0;
}
public TwoDShape(double x) {
width = height = x;
}
public double getWidth() {
return width;
}
public double getHeight() {
return height;
}
public void setWidth(double w) {
width = w;
}
public void setHeight(double h) {
height = h;
}
abstract public double area();
}
class Rectangle extends TwoDShape {
public Rectangle() {
super();
}
public Rectangle(double w, double h) {
super(w, h);
}
public Rectangle(double x) {
super(x);
}
@Override
public double area() {
return getWidth() * getHeight();
}
@Override
public void draw() {
System.out.println("Drawing Rectangle");
}
}
class Triangle extends TwoDShape {
public Triangle() {
super();
}
public Triangle(double w, double h) {
super(w, h);
}
public Triangle(double x) {
super(x);
}
@Override
public double area() {
return getWidth() * getHeight() / 2;
}
@Override
public void draw() {
System.out.println("Drawing Triangle");
}
}
以上是符合要求的Java类的实现代码,需要注意的是,要分别实现接口Shape
和抽象类TwoDShape
的所有方法,并在Rectangle
和Triangle
类中重写draw()
方法。