1.包cs2017.vo中包含如下内容:
父类point:包括描述点坐标的私有成员x和y;对成员的set/get方法;构造方法(有参和无参两种);显示点位置(坐标)的toString方法。
Point类的子类Circle:包括描述半径的私有成员radius;对成员radius的set/get方法;构造方法(无参、1个参数、3个参数三种);方法getArea()获得面积,方法toString()输出位置和半径信息(调用父类toString)。
Point类的子类Rectangle:包括描述长和宽的私有成员l和w;对成员l和w的set/get方法;构造方法(无参、2个参数、4个参数四种);方法getArea()获得面积,方法toString()输出位置和长宽信息(调用父类toString)。
Point类:
package cs2017.vo;
public class Point {
private double x;
private double y;
public void setX(double x) {
this.x=x;
}
public double getX() {
return x;
}
public void setY(double y) {
this.y=y;
}
public double getY() {
return y;
}
public Point() {
}
public Point(double x,double y) {
this.x=x;
this.y=y;
}
@Override
public String toString() {
return "坐标(" + x + ", " + y + ")";
}
}
Circle类:
package cs2017.vo;
public class Circle extends Point{
private double radius;
public void setRadius(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public Circle() {
}
public Circle(double radius) {
this.radius=radius;
}
public Circle(double x,double y,double radius) {
super(x, y);
this.radius=radius;
}
public double getArea() {
return getRadius()*getRadius()*Math.PI;
}
public String toString() {
return super.toString()+ "半径为:"+radius+",面积为:"+getArea();
}
}
Rectangle类:
package cs2017.vo;
public class Rectangle extends Point{
private double l;
private double w;
public Rectangle() {
}
public Rectangle(double l,double w) {
this.l=l;
this.w=w;
}
public Rectangle(double x,double y,double l,double w) {
super(x,y);
this.l=l;
this.w=w;
}
public void setL(double l) {
this.l=l;
}
public double getL() {
return l;
}
public void setW(double w) {
this.w=w;
}
public double getW() {
return w;
}
public double getArea() {
return getL()*getW();
}
public String toString() {
return super.toString()+"长为:"+l+",宽为:"+w+",面积为:"+getArea();
}
}
2.包cs2017.v1中包含如下内容 :
父类: Shape,其中Point类对象point为Shape类的私有属性成员;写出point的set/get方法;Shape类的构造方法;toString方法;子类:Rectangle、Circle继承了Shape类,写出其相应属性的set/get方法;类的构造方法;toString方法;getArea方法。
Shape类:
package cs2017.v1;
import cs2017.vo.Point;
public class Shape {
private Point point;
public void setPoint(Point point) {
this.point=point;
}
public Point getPoint() {
return point;
}
public Shape() {
}
public Shape(Point point) {
this.point=point;
}
public String toString() {
return "坐标("+point.getX()+","+point.getY()+")";
}
}
Circl类:
package cs2017.v1;
import cs2017.vo.Point;
public class Circle extends Shape{
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius=radius;
}
public Circle(double x,double y,double radius) {
setPoint(new Point(x, y));
this.radius=radius;
}
public void setRadius(double radius) {
this.radius=radius;
}
public double getradius() {
return radius;
}
public double getArea() {
return getradius()*getradius()*Math.PI;
}
public String toString() {
return super.toString()+"半径为:"+radius+",面积为:"+getArea();
}
}
Rectangle类:
package cs2017.v1;
import cs2017.vo.Point;
public class Rectangle extends Shape{
private double l;
private double w;
public Rectangle() {
}
public Rectangle(double l,double w) {
this.l=l;
this.w=w;
}
public Rectangle(double x,double y,double l,double w) {
setPoint(new Point(x,y));
this.l=l;
this.w=w;
}
public void setL(double l) {
this.l=l;
}
public double getL() {
return l;
}
public void setW(double w) {
this.w=w;
}
public double getW() {
return w;
}
public double getArea() {
return l*w;
}
public String toString() {
return super.toString()+"长:"+l+",宽:"+w+",面积:"+getArea();
}
}
3.包cs2017.v2中包含如下内容:
抽象类Shape,其中Point类对象为Shape类的属性成员,方法getAera()为抽象方法,
子类:Rectangle、Circle类继承了Shape类,在子类中,重写了getAera()方法。
Shape类:
package cs2017.v2;
import cs2017.vo.Point;
public abstract class Shape {
private Point point;
public Shape() {
}
public Shape(Point point) {
this.point=point;
}
public void setPoint(Point point) {
this.point=point;
}
public Point getPoint() {
return point;
}
public abstract double getArea();
public String toString() {
return "坐标("+point.getX()+","+point.getY()+")";
}
}
Circle类:
package cs2017.v2;
import cs2017.vo.Point;
public class Circle extends Shape{
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius=radius;
}
public Circle(double x,double y,double radius) {
setPoint(new Point(x,y));
this.radius=radius;
}
public void setRadius(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return Math.PI*radius*radius;
}
public String toString() {
return super.toString()+"半径为:"+radius+"面积为:"+getArea();
}
}
Rectangle类:
package cs2017.v2;
import cs2017.vo.Point;
public class Rectangle extends Shape{
private double l;
private double w;
public Rectangle() {
}
public Rectangle(double l,double w) {
this.l=l;
this.w=w;
}
public Rectangle(double x,double y,double l,double w) {
setPoint(new Point(x,y));
this.l=l;
this.w=w;
}
public void setL(double l) {
this.l=l;
}
public double getL() {
return l;
}
public void setW(double w) {
this.w=w;
}
public double getW() {
return w;
}
public double getArea() {
return l*w;
}
public String toString() {
return super.toString()+"长为:"+l+",宽为:"+w;
}
}
4.包2017.v3中包含如下内容:
接口: Shape,接口中有getAera()和getC()两个抽象方法。
接口的实现类: Rectangle、Circle类实现了Shape接口中的getAera()和getC()方法,Point类对象为它们的属性成员。
Shape接口:
package cs2017.v3;
public interface Shape {
public double getArea();
public double getC();
}
Circle类:
package cs2017.v3;
import cs2017.vo.Point;
public class Circle implements Shape{
private Point point;
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius=radius;
}
public Circle(double x,double y,double radius) {
point=new Point(x,y);
}
public void setPoint(Point point) {
this.point=point;
}
public Point getPoint() {
return point;
}
public void setRadius(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return Math.PI*getRadius()*getRadius();
}
public double getC() {
return 2*Math.PI*getArea();
}
public String toString() {
return "坐标("+point.getX()+","+point.getY()+")"+"半径为:"+getRadius();
}
}
Rectangle类:
package cs2017.v3;
import cs2017.vo.Point;
public class Rectangle implements Shape{
private Point point;
private double l;
private double w;
public Rectangle() {
}
public Rectangle(double l,double w) {
this.l=l;
this.w=w;
}
public Rectangle(double x,double y,double l,double w) {
point =new Point(x,y);
this.l=l;
this.w=w;
}
public void setPoint(Point point) {
this.point=point;
}
public Point getPoint() {
return point;
}
public void setL(double l) {
this.l=l;
}
public double getL() {
return l;
}
public void setW(double w) {
this.w=w;
}
public double getW() {
return w;
}
public double getArea() {
return l*w;
}
public double getC() {
return 2*(l+w);
}
public String toString() {
return "坐标("+point.getX()+","+point.getY()+")"+"长为:"+l+",宽为:"+w;
}
}
5.包 cs2017.factor中包含如下内容
测试类:
Test.java
TestV1.java
TestV2.java
TestV3.java
分别是上述包中的类的测试示例,并使用向上转型的方法,将子类转换为父类(或接口)的对象,通过父类(或接口)对象,引用父类(或接口)定义且被重写的相关的方法。
Test类:
package cs2017.factor;
import cs2017.vo.Circle;
import cs2017.vo.Point;
import cs2017.vo.Rectangle;
public class Test {
public static void main(String[] args) {
Point p=new Point(2.5, 4.0);
System.out.println(p.toString());
p=new Circle(1.2, 3.5, 8);
System.out.println(p.toString());
p=new Rectangle(1.5, 2.0, 9.6, 4.2);
System.out.println(p.toString());
}
}
TestV1类:
package cs2017.factor;
import cs2017.v1.Circle;
import cs2017.v1.Rectangle;
import cs2017.v1.Shape;
import cs2017.vo.Point;
public class TestV1 {
public static void main(String[] args) {
Point p=new Point(4.5, 6.2);
Shape s=new Shape(p);
System.out.println(s.toString());
s=new Circle(2.5, 6.0, 5);
System.out.println(s.toString());
s=new Rectangle(1.6, 5.0, 9.6, 6);
System.out.println(s.toString());
p=s.getPoint();
System.out.println(p.toString());
}
}
TestV2类:
package cs2017.factor;
import cs2017.v2.Shape;
import cs2017.v2.Circle;
import cs2017.v2.Rectangle;
public class TestV2 {
public static void main(String[] args) {
Shape s=new Circle(3.0, 4.5, 6);
System.out.println(s.toString()+",面积为:"+s.getArea());
s=new Rectangle(3.8, 2, 12, 4);
System.out.println(s.toString()+",面积为:"+s.getArea());
}
}
TestV3类:
package cs2017.factor;
import cs2017.v3.Rectangle;
import cs2017.v3.Circle;
import cs2017.v3.Shape;
public class TestV3 {
public static void main(String[] args) {
Shape s=new Circle(5, 8, 9);
System.out.println(s.toString()+",面积为:"+s.getArea()+",周长为:"+s.getC());
s=new Rectangle(3, 6, 20, 11);
System.out.println(s.toString()+",面积为:"+s.getArea()+",周长为:"+s.getC());
}
}



