Наследование методов. Не работают два аналогичных метода - C#

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

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

Доброго времени суток! Пытаюсь реализовать наследование методов, и вот вроде и решил свою задачу, но выяснилось, что второй метод (shiftY), абсолютно аналогичный первому (shiftX). В чем может быть загвоздка?
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {   //создаем точки            
            Point3D p1 = new Point3D(4, 3, 1);
            Point3D p2 = new Point3D(5, 7, 9);
           
            Console.WriteLine("Points initialized. First point (4, 3, 1), second point (5, 7, 9), third point (1,2), fourth point (2,5)...");
            
            //////
            Console.WriteLine("Shift first point (start position (4,3,1)");
            Console.WriteLine("Input shift for X");
            float sX = float.Parse(Console.ReadLine());
            p1.ShiftX(sX);
            p1.sendXPosition();//Все хорошо
 
            float sY = float.Parse(Console.ReadLine());
            p1.ShiftY(sY);
            p1.sendYPosition();//Не работает
 
            float sZ = float.Parse(Console.ReadLine());
            p1.ShiftZ(sZ);
            p1.sendZPosition();//Все нормально

            Console.ReadKey();
        }
    }
    class Point2D
    {
        float x, y;
        public Point2D(float x, float y)
        {
            this.x = x;
            this.y = y;
        }
       
        public virtual void ShiftX(float shiftx) //сдвигает точку по Х на величину аргумента    
        {
            Console.WriteLine("Shift point by X on {0}", shiftx);
            this.x += shiftx;
        }
        public virtual void ShiftY(float shifty)
        {
            Console.WriteLine("Shift point by Y on {0}", shifty);
            this.x += shifty;
        }
        
        public virtual void sendXPosition()
        {
            Console.WriteLine("Position by X= " + this.x);
        }
        public virtual void sendYPosition()
        {
            Console.WriteLine("Position by X= " + this.y);
        }
          
    }
    class Point3D : Point2D
    {
        float x, y, z;
        public Point3D(float x, float y, float z) : base(x, y)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }
      
        public override void ShiftX(float shiftx2)
        {
            base.ShiftX(shiftx2);
        }
        public override void ShiftY(float shifty2)
        {
            base.ShiftY(shifty2);
        }
        public void ShiftZ(float shiftz)
        {
            this.z += shiftz;
        }
        public override void sendXPosition()
        {
            base.sendXPosition();
        }
        public override void sendYPosition()
        {
            base.sendYPosition();
        }
        public void sendZPosition()
        {
            Console.WriteLine("Position by Z= " + this.z);
        }
    }
}
Скриншот консоли:

Решение задачи: «Наследование методов. Не работают два аналогичных метода»

textual
Листинг программы
public virtual void ShiftY(float shifty)
        {
            Console.WriteLine("Shift point by Y on {0}", shifty);
            this.x += shifty;
        }

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы