对于父类的含参构造方法,子类必须通过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;
- }
- }
