1 今天写了以圆类Circle为基础设计球类Sphere
实验要求:
程序源代码:
package Point;
import java.util.Scanner;
public class Ma {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
double r = input.nextDouble();
Sphere s1=new Sphere(1,2,4);
Sphere s2=new Sphere(s1);
s1.show();
System.out.println();
System.out.println("Area="+s1.area());
System.out.println("Volume="+s1.volume());
s2.setRadius(r);
s2.show();
System.out.println();
System.out.println("Area="+s2.area(1));
System.out.println("Circumference="+s2.circumference());
input.close();
}
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
double r = input.nextDouble();
Sphere s1=new Sphere(1,2,4);
Sphere s2=new Sphere(s1);
s1.show();
System.out.println();
System.out.println("Area="+s1.area());
System.out.println("Volume="+s1.volume());
s2.setRadius(r);
s2.show();
System.out.println();
System.out.println("Area="+s2.area(1));
System.out.println("Circumference="+s2.circumference());
input.close();
}
}
package Point;
public class Point {
double x;
double y;
Point()//无参构造
{
x=0;
y=0;
System.out.println("Point Constructor run");
}
Point(double xv,double yv)//有参构造
{
x=xv;
y=yv;
System.out.println("Point Constructor run");
}
Point(Point p) //拷贝构造
{
x=p.x;
y=p.y;
System.out.println("Point CopyConstructor run");
}
void show() //显示Point信息
{
System.out.println("("+x+","+y+")");
}
double area(){return 0;} //面积=0
void setX(double xv){x=xv;} //设置X坐标
void setY(double yv){y=yv;} //设置Y坐标
double getX() {return x;} //获取X坐标
double getY() {return y;} //获取Y坐标
}
double x;
double y;
Point()//无参构造
{
x=0;
y=0;
System.out.println("Point Constructor run");
}
Point(double xv,double yv)//有参构造
{
x=xv;
y=yv;
System.out.println("Point Constructor run");
}
Point(Point p) //拷贝构造
{
x=p.x;
y=p.y;
System.out.println("Point CopyConstructor run");
}
void show() //显示Point信息
{
System.out.println("("+x+","+y+")");
}
double area(){return 0;} //面积=0
void setX(double xv){x=xv;} //设置X坐标
void setY(double yv){y=yv;} //设置Y坐标
double getX() {return x;} //获取X坐标
double getY() {return y;} //获取Y坐标
}
package Point;
public class Circle extends Point{
static double PI=3.14159;
double radius;
Circle()
{
System.out.println("Circle Constructor run");
}
Circle(double xx,double yy,double rr)
{
super(xx,yy);
radius=rr;
System.out.println("Circle Constructor run");
}
Circle(Circle cir)
{
super(cir);
radius=cir.radius;
System.out.println("Circle CopyConstructor run");
}
void setRadius(double r){radius=r;}
double getRadius() {return radius;}
double circumference() {return 2*PI*radius;} //用于计算圆的周长
double area() {return PI*radius*radius;} //用于计算圆的面积
void show() {System.out.println("("+x+","+y+"),"+"Radius="+getRadius());}
}
package Point;
public class Sphere extends Circle{
Sphere(){System.out.println("Sphere Constructor run");}
Sphere(double xx, double yy, double rr)//有参构造函数Sphere
{
super(xx,yy,rr);
System.out.println("Sphere Constructor run");
}
Sphere(Sphere sp) //拷贝构造函数Sphere
{
super(sp);
setRadius(sp.getRadius());
System.out.println("Sphere CopyConstructor run");
}
double volume() //用于计算球的体积
{
double r=getRadius();
return 4*PI*r*r*r/3;
}
double area() //用于计算球的表面积
{
double r=getRadius();
return 4*PI*r*r;
}
double area(int i)
{return super.area();}
}
Sphere(){System.out.println("Sphere Constructor run");}
Sphere(double xx, double yy, double rr)//有参构造函数Sphere
{
super(xx,yy,rr);
System.out.println("Sphere Constructor run");
}
Sphere(Sphere sp) //拷贝构造函数Sphere
{
super(sp);
setRadius(sp.getRadius());
System.out.println("Sphere CopyConstructor run");
}
double volume() //用于计算球的体积
{
double r=getRadius();
return 4*PI*r*r*r/3;
}
double area() //用于计算球的表面积
{
double r=getRadius();
return 4*PI*r*r;
}
double area(int i)
{return super.area();}
}
运行截图:
2 今天学到可以在子类通过super调用父类的构造以及其他函数,可以在子类中通过函数的重载调用父类已经被覆盖的函数。
3 明天继续写题