【发布时间】:2017-02-24 21:14:22
【问题描述】:
我对基类是全新的,所以如果我错了或者我应该以另一种方式这样做,请纠正我,但我在下面编写了一个简单的代码 sn-p 来解释我想要做什么。
class A : B
{
private int _classId;
public A (int id) : base(id)
{
_classId = id;
}
public string GetString()
{
return "This will eventually be an important string.";
}
}
class B
{
private int _classId;
public B (int id)
{
// here I want to be able to get access to class A's methods
// such as GetString() ...
}
public void SomeMethod()
{
}
}
所以我想做的是让B得到A的方法。
这样做的原因是什么? 我不想填充类 A 因为 B 将有很多方法,所以将它们保留在 B 中然后在其他代码中从 A 中获取它们会更干净。我做错了吗?这不是基类的作用吗?我只是希望仍然能够做到这一点:
A.SomeMethodInB();
没有用垃圾填充 A 类并通过将其存储在 B 类中使其更清洁
【问题讨论】:
-
您应该查看此参考以了解受保护的关键字:msdn.microsoft.com/en-us/library/bcd5672a.aspx
-
我认为,您的基类和派生类放错了位置,根据您的解释,我理解,您应该将 A 类与许多受保护的方法作为基类,并让 b 类从中派生
-
所以我想做的是让 B 获得 A 的方法。不——情况正好相反。
A从B获取方法。如果你想让B中的方法调用A中的方法,在B中声明方法virtual,在`A'中声明override。