• 【Java实验五】继承与多态


    一、实验一

    对于父类的含参构造方法,子类必须通过super调用,重写父类的构造方法

    设计一个应用程序要求:

    • 设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成
    • 员变量x和y,获取和设置x和y值的public方法。
    • 设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径
    • 的protected,类型的成员变量r、获取和设置r值的public方法、计算圆面积的一public方法。
    • 设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的
    • protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
    • 建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
    • 要求:每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
    1. package text;
    2. import java.util.*;
    3. public class Text {
    4. public static void main(String[] args)
    5. {
    6. Circle p1=new Circle(0,0,3);
    7. Cylinder p2=new Cylinder(2,2,4,3.2);
    8. System.out.println("圆心坐标:("+p1.get_x()+","+p1.get_y()+")");
    9. System.out.println("圆的半径:"+p1.get_r());
    10. System.out.println("圆的面积:"+p1.cir_area());
    11. System.out.println();
    12. System.out.println("圆柱圆心坐标:("+p2.get_x()+","+p2.get_y()+")");
    13. System.out.println("圆柱底面半径:"+p2.get_r());
    14. System.out.println("圆柱的高:"+p2.get_h());
    15. System.out.println("圆柱体积:"+p2.cyl_volume());
    16. }
    17. }
    18. class Point
    19. {
    20. protected double x=0;
    21. protected double y=0;
    22. public Point(double x,double y)
    23. {
    24. this.x=x;
    25. this.y=y;
    26. }
    27. public double get_x()
    28. {
    29. return x;
    30. }
    31. public double get_y()
    32. {
    33. return y;
    34. }
    35. }
    36. class Circle extends Point
    37. {
    38. protected double r=0;
    39. //子类的构造方法调用父类的构造方法
    40. public Circle(double x,double y,double r)
    41. {
    42. super(x,y);
    43. this.r=r;
    44. }
    45. public double get_r()
    46. {
    47. return r;
    48. }
    49. public double cir_area()
    50. {
    51. return r*r*3.14159;
    52. }
    53. }
    54. class Cylinder extends Circle
    55. {
    56. protected double h=0;
    57. public Cylinder(double x,double y,double r,double h)
    58. {
    59. super(x,y,r);
    60. this.h=h;
    61. }
    62. public double get_h()
    63. {
    64. return h;
    65. }
    66. public double cyl_volume()
    67. {
    68. return h*3.14159*r*r;
    69. }
    70. }

     

     

    二、实验二 

    定义一个接口,其中包含一个计算体积的抽象方法calculateVolume(),设计circle和Rectangle两个类都实现接口中的方法calculateVolume(),分别计算球体和长方体的体积。

    1. package text;
    2. import java.util.*;
    3. public class Text {
    4. public static void main(String[] args)
    5. {
    6. Circle p1=new Circle(3);
    7. Rectangle p2=new Rectangle(1,2,3);
    8. System.out.printf("圆的体积:%.3f\n",p1.calculateVolume());
    9. System.out.println();
    10. System.out.println("长方体体积:"+p2.calculateVolume());
    11. }
    12. }
    13. public interface Shape
    14. {
    15. abstract double calculateVolume();
    16. }
    17. class Circle implements Shape
    18. {
    19. protected double r=0;
    20. public Circle(double r)
    21. {
    22. this.r=r;
    23. }
    24. public double calculateVolume()
    25. {
    26. return 3.0/4*r*r*r*3.14159;
    27. }
    28. }
    29. class Rectangle implements Shape
    30. {
    31. protected double a=0,b=0,h=0;
    32. public Rectangle(double a,double b,double h)
    33. {
    34. this.a=a;
    35. this.b=b;
    36. this.h=h;
    37. }
    38. public double calculateVolume()
    39. {
    40. return a*b*h;
    41. }
    42. }

     

  • 相关阅读:
    【国庆活动】能全部通关?那你这些知识点都巩固了(附上游戏攻略...)
    【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】
    Spring Boot中的类初始化方法的执行先后顺序
    Spring Boot 还在用 if 校验参数?
    基于Mxnet实现目标跟踪SMOT【附部分源码】
    【SAP Abap】SAP ODATA数据服务发布
    mysql数据库的四种隔离级别
    高效一键改写文章,智能伪原创工具轻松搞定
    leetCode 214.最短回文串 + KMP
    深度学习的初始化(暂时)
  • 原文地址:https://blog.csdn.net/weixin_61639349/article/details/127751511