从继承 class 引用抽象 class 中声明的变量
Referencing a variable declared in abstract class from inherited class
我目前正在阅读一本针对 java 编写的关于设计模式的书,但我想用 Java 和 C# 编写示例代码。现在我正在尝试在 C# 中实现策略模式,虽然我在网上找到了很多示例,但我目前的问题是我最想弄清楚的。
在 Java 示例中,我有一个抽象 class,然后是扩展该抽象 class 的 class。在抽象 class 中,我声明但不实例化接口的变量,然后在扩展 class.
中实例化这些变量
接口:
public interface MathStuff{
public void add();
}
摘要:
public abstract class Math{
MathStuff mathStuff;
public Math(){}
public void addStuff(){
mathStuff.add();
}
}
扩展Class:
public class DoStuffWithMath extends Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
现在我真的很想在 C# 中复制它。 C# 代码本质上是相同的。我有一个接口、一个抽象 class 和一个 class,我假设它扩展了抽象 class。我对 C# 不太熟悉。 class 看起来像这样。
class DoStuffWithMath : Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
C# 代码的问题是我试图说的 "mathStuff = new RandomClass()"。任何帮助或阅读 material 将不胜感激。
明确添加 protected
将解决问题(覆盖默认 private
访问权限):
public abstract class Math{
protected MathStuff mathStuff;
public Math(){}
public void addStuff(){
mathStuff.add();
}
}
请注意,根据您的需要,传递 mathStuff
作为基础 class 的构造函数或使用 属性 而不是字段将是更好的解决方案。
我目前正在阅读一本针对 java 编写的关于设计模式的书,但我想用 Java 和 C# 编写示例代码。现在我正在尝试在 C# 中实现策略模式,虽然我在网上找到了很多示例,但我目前的问题是我最想弄清楚的。
在 Java 示例中,我有一个抽象 class,然后是扩展该抽象 class 的 class。在抽象 class 中,我声明但不实例化接口的变量,然后在扩展 class.
中实例化这些变量接口:
public interface MathStuff{
public void add();
}
摘要:
public abstract class Math{
MathStuff mathStuff;
public Math(){}
public void addStuff(){
mathStuff.add();
}
}
扩展Class:
public class DoStuffWithMath extends Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
现在我真的很想在 C# 中复制它。 C# 代码本质上是相同的。我有一个接口、一个抽象 class 和一个 class,我假设它扩展了抽象 class。我对 C# 不太熟悉。 class 看起来像这样。
class DoStuffWithMath : Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
C# 代码的问题是我试图说的 "mathStuff = new RandomClass()"。任何帮助或阅读 material 将不胜感激。
明确添加 protected
将解决问题(覆盖默认 private
访问权限):
public abstract class Math{
protected MathStuff mathStuff;
public Math(){}
public void addStuff(){
mathStuff.add();
}
}
请注意,根据您的需要,传递 mathStuff
作为基础 class 的构造函数或使用 属性 而不是字段将是更好的解决方案。