2013-11-08 2 views
0

Привет всем, что я новичок в программировании на C#. Я изучаю наследство, и у меня есть вопрос. Я хочу наследовать точку с координатами x, y, а затем наследование. Точка M: точка с переменной переменной m so (x, y, m). Мне нужно использовать конструктор с параметрами. Пока я покажу вам пример моей работы. Проблема в том, как я могу использовать конструктор, чтобы это было верно? Спасибо! http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf - Здесь вы можете увидеть объект Point-> PointM-> PointZ.Inheritance a Point

class Point 
{  
    public double X { get; set; } 
    public double Y { get; set; } 
} 

class Point M : Point 
{ 
    public double M { set; get; } 
} 

class Point Z : Point M 
{ 
    public double Z { set; get; }   
} 
+0

См [Использование Конструкторы (C# Руководство по программированию)] (http://msdn.microsoft.com/en-us/library/vstudio/ms173115.aspx) на MSDN. – CodeCaster

+0

Некоторые специальные предложения C# здесь должны помнить разницу между ссылочным типом (классом) и типом значения (struct). Точка, вероятно, будет структурой, так как точно так же, как числа и другие «значения», любые две точки с одинаковыми координатами неразличимы. Во-вторых: часто полезно использовать «состав над наследованием», то есть, когда вы хотите получить точку с M, введите тип, который * содержит * как точку, так и измерение, а не расширение точки с помощью измерения. –

ответ

5

Это стандартный способ написания конструкторов. Базовый класс Point определяет свой собственный конструктор, а классы, которые расширяют Point, должны вызвать его конструктор с ключевым словом base.

class Point 
    {  
     public double X { get; set; } 
     public double Y { get; set; } 

     public Point(double x, double y) 
     { 
      X = x; 
      Y = y; 
     } 
    } 
    class PointM : Point 
    { 
     public double M { set; get; } 

     public PointM(double x, double y, double m) : base(x,y) 
     { 
      M = m; 
     } 
    } 
+0

Спасибо. Это мне очень помогает! :) –