Конструкторы класса, наследование - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Создал класс и несколько производных от него. В некоторых классах (circle, rectangle) появилась необходимость объявить не один, а два конструктора с разными параметрами, и вот с ними возникла проблема - выдаёт ошибку (класс rectangle, конструктор public rectangle (point x, double w, double h)). Не пойму почему, объясните пожалуйста. А ещё в функциях "mov" пишет предупреждение "скрывает наследуемый член". То же не понимаю что это значит и как это устранить. Объясните пожалуйста.
Листинг программы
  1. abstract class obgekt
  2. {
  3. public obgekt()
  4. { }
  5. abstract public double S();
  6. }
  7. class point
  8. {
  9. double x, y;
  10. public point (double x, double y)
  11. {
  12. this.x = x;
  13. this.y = y;
  14. }
  15. public point mov(double a, double b)
  16. {
  17. double x2, y2;
  18. x2 = x + a;
  19. y2 = y + b;
  20. return new point (x2,y2);
  21. }
  22. public double X
  23. {
  24. get { return x; }
  25. }
  26. public double Y
  27. {
  28. get { return y; }
  29. }
  30. }
  31. class circle:point
  32. {
  33. point c;
  34. double r;
  35. public circle (double x, double y,double r):base(x,y)
  36. {
  37. this.r = r;
  38. c=new point(x,y);
  39. }
  40. public circle(point o, double r)
  41. {
  42. this.r = r;
  43. c =o;
  44. }
  45. public circle mov(double a, double b)
  46. {
  47. point c1= c.mov(a, b); //вызывает метод из класса к кот относится объект
  48. return new circle (c1, r);
  49. }
  50.  
  51. public circle mov_simetriy(double x3, double y3)
  52. {
  53. //написать в point здесь вызвать для центра
  54. point c1 = c.mov(x3, y3);
  55. return new circle(c1, r);
  56. }
  57. public double S()
  58. {
  59. double S;
  60. return S = 3.14*r*r;
  61. }
  62. public point C
  63. {
  64. get { return c; }
  65. }
  66. }
  67. class rectangle: point
  68. {
  69. point left_ugol;
  70. double w, h;
  71. public rectangle (double x, double y, double w, double h):base(x,y)
  72. {
  73. // для lvu вызываем конструктор point
  74. left_ugol = new point(x, y);
  75. this.w = w;
  76. this.h = h;
  77. }
  78. public rectangle (point x, double w, double h)
  79. {
  80. // для lvu вызываем конструктор point
  81. left_ugol =x;
  82. this.w = w;
  83. this.h = h;
  84. }
  85. public point ugol
  86. {
  87. get { return left_ugol; }
  88. }
  89. public rectangle mov(double a, double b)
  90. {
  91. point left_ugol2 = left_ugol.mov(a, b);
  92. return new rectangle (left_ugol2, w, h);
  93. }
  94. public double S()
  95. {
  96. double S;
  97. return S = w * h;
  98. }
  99. }
  100. class square:rectangle
  101. {
  102. public square(double x1, double y1, double w):base(x1,y1,w,w)
  103. {
  104. }
  105. public double S()
  106. {
  107. return base.S();
  108. }
  109. public square mov (double x1, double y1)
  110. {
  111. base.mov(x1,y1);
  112. return new square (x1,y1,w);
  113. }
  114.  
  115. }

Решение задачи: «Конструкторы класса, наследование»

textual
Листинг программы
  1. public rectangle(point x, double w, double h) : base(x.X, x.Y)
  2. {
  3.     // для lvu вызываем конструктор point
  4.     left_ugol = x;
  5.     this.w = w;
  6.     this.h = h;
  7. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы