c# - 派生类中的别名属性名称?

标签 c# design-patterns inheritance properties polymorphism

我正在通过继承我自己的 Point 类来编写自己的 Vector 类。我在 Point 类中称为 x、y 和 z 的字段我想在 Vector 类中称为 i、j 和 k。相同的私有(private)双变量支持属性。

我使用的方法是在 Vector 类中将 x、y 和 z 声明为私有(private)的,并将 i、j 和 k 设置为公共(public)的,但使用相同的 get/setter,如下所示:

这行得通吗,还是我让自己心痛?

public class ptsVector : ptsPoint
{
   private double x { get { return x_; } set { x_ = value; } }
   private double y { get { return y_; } set { y_ = value; } }
   private double z { get { return z_; } set { z_ = value; } }

   public double i { get { return x_; } set { x_ = value; } }
   public double j { get { return y_; } set { y_ = value; } }
   public double k { get { return z_; } set { z_ = value; } }
   // methods elided for clarity
}

请注意,Point 类将 x_、y_ 和 z_ 作为 protected double 值。

最佳答案

我想我们需要更多关于您将如何使用它们的信息。如果您不需要将 ptsVector 称为 ptsPoint,那么我会放弃继承。你能说一个向量是一个点吗?如果不是,那么多态在这里就不合适了。

撇开这个特殊的例子不谈,我认为无论如何,给一个属性起别名是个坏主意。它增加了很多复杂性,并没有真正的好处。

关于c# - 派生类中的别名属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10274451/

相关文章:

c# - 从 C# Azure Function Apps 调用 PowerShell

c# - 我们什么时候使用 MVVM?

javascript - 初级 JavaScript 模式

c - 通过在一个结构之间转换指针来实现 C 中的继承是否合法,该结构是另一个结构的子集而不是第一个成员?

xaml - 如何从Silverlight中的XAML中定义的用户控件正确继承

c# - 更改静态 int 变量时触发事件?

c# - 将参数发送到动态加载的用户控件中

c# - 对类型约束的反射(reflection)

java - 这是哪种单例?

Java - 从对象属性获取方法