一、实验一
对于父类的含参构造方法,子类必须通过super调用,重写父类的构造方法
设计一个应用程序要求:
- 设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成
- 员变量x和y,获取和设置x和y值的public方法。
- 设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径
- 的protected,类型的成员变量r、获取和设置r值的public方法、计算圆面积的一public方法。
- 设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的
- protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
- 建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
- 要求:每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
package text;
import java.util.*;
public class Text {
public static void main(String[] args)
{
Circle p1=new Circle(0,0,3);
Cylinder p2=new Cylinder(2,2,4,3.2);
System.out.println("圆心坐标:("+p1.get_x()+","+p1.get_y()+")");
System.out.println("圆的半径:"+p1.get_r());
System.out.println("圆的面积:"+p1.cir_area());
System.out.println();
System.out.println("圆柱圆心坐标:("+p2.get_x()+","+p2.get_y()+")");
System.out.println("圆柱底面半径:"+p2.get_r());
System.out.println("圆柱的高:"+p2.get_h());
System.out.println("圆柱体积:"+p2.cyl_volume());
}
}
class Point
{
protected double x=0;
protected double y=0;
public Point(double x,double y)
{
this.x=x;
this.y=y;
}
public double get_x()
{
return x;
}
public double get_y()
{
return y;
}
}
class Circle extends Point
{
protected double r=0;
//子类的构造方法调用父类的构造方法
public Circle(double x,double y,double r)
{
super(x,y);
this.r=r;
}
public double get_r()
{
return r;
}
public double cir_area()
{
return r*r*3.14159;
}
}
class Cylinder extends Circle
{
protected double h=0;
public Cylinder(double x,double y,double r,double h)
{
super(x,y,r);
this.h=h;
}
public double get_h()
{
return h;
}
public double cyl_volume()
{
return h*3.14159*r*r;
}
}
二、实验二
定义一个接口,其中包含一个计算体积的抽象方法calculateVolume(),设计circle和Rectangle两个类都实现接口中的方法calculateVolume(),分别计算球体和长方体的体积。
package text;
import java.util.*;
public class Text {
public static void main(String[] args)
{
Circle p1=new Circle(3);
Rectangle p2=new Rectangle(1,2,3);
System.out.printf("圆的体积:%.3f\n",p1.calculateVolume());
System.out.println();
System.out.println("长方体体积:"+p2.calculateVolume());
}
}
public interface Shape
{
abstract double calculateVolume();
}
class Circle implements Shape
{
protected double r=0;
public Circle(double r)
{
this.r=r;
}
public double calculateVolume()
{
return 3.0/4*r*r*r*3.14159;
}
}
class Rectangle implements Shape
{
protected double a=0,b=0,h=0;
public Rectangle(double a,double b,double h)
{
this.a=a;
this.b=b;
this.h=h;
}
public double calculateVolume()
{
return a*b*h;
}
}