【发布时间】:2015-01-08 02:59:08
【问题描述】:
我目前正在阅读一本关于设计模式的书,该书是针对 Java 编写的,但我想用 Java 和 C# 编写示例。现在我正在尝试在 C# 中实现策略模式,虽然我在网上找到了很多示例,但我目前的问题是我最想弄清楚的问题。
在 Java 示例中,我有一个抽象类,然后是一个扩展该抽象类的类。在抽象类中我声明但不实例化接口的变量,然后在扩展类中实例化这些变量。
界面:
public interface MathStuff{
public void add();
}
摘要:
public abstract class Math{
MathStuff mathStuff;
public Math(){}
public void addStuff(){
mathStuff.add();
}
}
扩展类:
public class DoStuffWithMath extends Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
现在我真的很想在 C# 中复制它。 C# 代码基本相同。我有一个接口、一个抽象类和一个我假设正在扩展抽象类的类。我对 C# 不太熟悉。那堂课看起来像这样。
class DoStuffWithMath : Math{
public DoStuffWithMath(){
mathStuff = new RandomClass();
}
}
C# 代码的问题在于我尝试说“mathStuff = new RandomClass()”。任何帮助或阅读材料将不胜感激。
【问题讨论】:
-
如果你在 C# 中声明一个没有访问修饰符的实例成员,它被认为是
private。你需要像protected这样的东西。 -
查看stackoverflow.com/questions/295224/… 和链接。 Java 和 C# 之间存在一些差异(虚拟、默认访问说明符...),这使得复制粘贴的 Java 代码在 C# 中的工作方式不同。
-
@SotiriosDelimanolis 这解决了我的问题,谢谢
标签: java c# oop inheritance