1.编写一个长方形类(抽象类),包括定义宽w和高h的public属性,编程如下:
(1)一个不带参数的构造方法,用于将w和h初始化为0;
(2)一个带w和h的构造方法,用于初始化w和h;
(3)计算面积的方法calArea()和计算周长的方法calPerimenter();
2.通过继承长方形类类编写一个具有可以确定位置的矩形类PlainRect,其确定位置用
矩形的左上角坐标来标识,包含:添加两个属性:矩形左上角坐标startX和startY。编程如下:
(1)定义public修饰的startX和startY两个属性;
(2)一个不带参数的构造方法,用于将w,h, startX, startY初始化为0;
(3)一个带w,h, startX, startY的构造方法,用于初始化w,h, startX, startY;
(4) 定义一个方法: 判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩形内,返回true, 否则,返回false。
提示:点在矩形类是指满足条件:
x>=startX&&x<=(startX+width)&&y=(startY-height)
(5)编写PlainRect类的测试程序
a. 创建一个左上角坐标为(12,18),长为20,宽为10的矩形对象;
计算并打印输出矩形的面积和周长;
b.给出任意2个坐标点,如(14,19)和(11,13),判断该坐标是否在该矩形内部,如果在矩形内部,打印在矩形内部,否则打印不在矩形内部。
/**
* 该类没有抽象方法,设置为抽象类没有意义
*/
public abstract class Rectangle {
/**
* 宽
*/
public double w;
/**
* 高
*/
public double h;
/**
* 无参构造
*/
public Rectangle() {
}
/**
* 全参构造
* @param w - 指定宽
* @param h - 指定高
*/
public Rectangle(double w, double h) {
this.w = w;
this.h = h;
}
/**
* 计算面积
* @return 宽 X 高 = 面积
*/
public double calArea() {
return w * h;
}
/**
* 计算周长
* @return 2 X (宽 + 高) = 周长
*/
public double calPerimenter() {
return 2 * (w + h);
}
}
public class PlainRect extends Rectangle {
/**
* 左上角的x坐标
*/
public double startX;
/**
* 左上角的y坐标
*/
public double startY;
/**
* 无参构造
*/
public PlainRect() {
}
/**
* 全参构造
* @param w - 指定宽
* @param h - 指定高
* @param startX - 指定x坐标
* @param startY - 指定x坐标
*/
public PlainRect(double w, double h, double startX, double startY) {
super(w, h);
this.startX = startX;
this.startY = startY;
}
/**
* 判断点是否在矩形内
* @param x - x坐标
* @param y - y坐标
* @return
*/
public boolean isInside(double x,double y) {
return x >= startX
&& x <= (startX + w)
&& y <= startY
&& y >= startY - h;
}
}
/**
* 测试类
*/
public class PlainRectTest {
private static PlainRect rect;
/**
* 初始化数据
*/
private static void init() {
rect = new PlainRect(20, 10, 12, 18);
}
/**
* 测试打印周长面积
*/
public static void testAreaPerimenter() {
System.out.println("矩形的面积为:" + rect.calArea());
System.out.println("矩形的周长为:" + rect.calPerimenter());
}
public static void testInside(double x, double y) {
if (rect.isInside(x, y)) {
System.out.println("在矩形内部");
} else {
System.out.println("不在矩形内部");
}
}
/**
* 执行入口
* @param args --
*/
public static void main(String[] args) {
init();
testAreaPerimenter();
testInside(14, 19);
testInside(11, 13);
testInside(13, 11);
}
}
希望对你有帮助...