题目:
解答:
public class Circle2D {
double x=0,y=0,radius=1; //定义类中的方法所使用的变量
public Circle2D () { //无参构造函数,即不输入参数时,默认的实例圆心在(0,0),半径为1
}
public Circle2D (double x,double y,double radius) { //有参构造函数,用于生成具有相应参数的实例
this.x=x;
this.y=y;
this.radius=radius;
}
public double getX() { //用于访问x值的方法
return x;
}
public double getY() { //用于访问y值的方法
return y;
}
public double getRadius() { //用于访问radius的方法
return radius;
}
public double getArea() { //计算并返回面积值
double area=0;
area=Math.PI*Math.pow(radius,2);
return area;
}
public double getPerimeter() { //计算并返回周长
double perimeter=0;
perimeter=2*Math.PI*radius;
return perimeter;
}
public boolean contains(double x,double y) { //判断(x,y)是否在对应实例圆的内部
double d=0;
d=Math.sqrt(x*x+y*y);
if(d<radius)return true;
else return false;
}
public boolean contains(Circle2D circle) { //参数circle为Circle2D类所对应的某个实例
double x1=circle.getX() ,y1=circle.getY(),radius1=circle.getRadius(); //得到circle实例的参数
double x0=x,y0=y,radius0=radius;
double d=0;
d=Math.sqrt(Math.pow((x1-x0),2)+Math.pow((y1-y0),2));
if(d<radius0-radius1) return true; //判断目前的实例圆是否内涵于circle对应的实例圆
else return false;
}
public boolean overlaps(Circle2D circle) { //判断目前的实例圆是否与circle对应的实例圆相交
double x1=circle.getX() ,y1=circle.getY(),radius1=circle.getRadius();
double x0=x,y0=y,radius0=radius;
double d=0;
d=Math.sqrt(Math.pow((x1-x0),2)+Math.pow((y1-y0),2));
if(d>Math.abs(radius1-radius0) && d<radius1+radius0) return true;
else return false;
}
public static void main(String[] args) { //这里为了方便,直接在类中写main方法
Circle2D c1=new Circle2D(2,2,5.5); //新建3个实例圆
Circle2D c2=new Circle2D(4,5,10.5);
Circle2D c3=new Circle2D(3,5,2.3);
System.out.printf("Circle1 area:%3f\n",c1.getArea());
System.out.printf("Circle perimeter:%3f\n",c1.getPerimeter());
System.out.printf("Does circle1 contain the point (3,3)? %b\n",c1.contains(3,3));
System.out.printf("Does circle contain the circle centered at (4,5) and radius 10.5? %b\n",c1.contains(c2));
System.out.printf("Does circle1 overlap the circle centered at (3,5) and radius 2.3? %b\n",c1.overlaps(c3));
}
}
对类的理解:
1、类是对象的一个模板,封装了对象的数据以及处理方法
2、通过新建类的实例来调用类中的方法
最后,感谢各位的浏览啦,如果对代码有什么改进建议,可以在下方留言区留言ヽ(・ω・。)ノ