答:对。创建窗体应用的时候,IDE会帮你创建项目需要的所有文件,这包括一个Program.cs(内有一个含有程序入口点的静态类),还有Form1.cs(内含一个叫做Form1的空白窗体)。
试试这样做:用IDE创建新项目的时候不要选择窗体项目,选择空项目。然后向其中添加一个类文件,把泳池难题中的代码写进去。由于这个程序要用消息框,你需要通过添加引用来引入“System.Windows.Forms”(而创建窗体应用的时候,这一个步骤将会有IDE帮你自动完成)。最后,在项目菜单中选择属性,并把项目类型设置为窗体应用。
现在运行...你就可以看见结果了!恭喜,你徒手创建了一个C#程序。

问:可以继承含有入口点的类吗?
答:可以。入口点必须是静态方法,但是它并不一定要处于一个静态类中。(记住,用static修饰的类不可以被实例化,但是它的方法在程序一开始就可用了。所以在泳池难题的程序中,你可以在任何其他方法中调用TestBoats.Main(),而无须声明引用变量或者用new关键字实例化对象。)
问:我搞不明白为什么有些方法叫做“虚方法”--它们看起来很真实感啊!
答:virtual关键字关系到.Net在后台如何处理虚方法。.net会使用一种叫做虚方法表的东西。.NET用它记录哪些方法是虚方法,哪些方法被覆写过。别担心--你无需知道它具体怎么工作也可以使用虚方法!
问:你说类图中只可以向上移不可以向下移是什么意思?
答:在类图中,上层的类比下层的类更具抽象性。比较具体的类(例如衬衫,汽车)继承自比较抽象的类(例如衣物,机动车)。这样想,就很容易明白当你只是需要随便一种机动车的时候汽车,小货车,摩托车都可以胜任。但是如果你需要汽车,摩托车对你就没有用了。
继承就如上面说的那样。如果有一个方法,接受Vehicle类型的参数,而Motorcycle继承自Vehicle,这样你就可以把一个Motorcycle的实例传进这个方法中去。但是如果接受的参数是Motorcycle类型,就不是随便传进一个Vehicle类型去都行了,因为传进去的有可能是Van(小货车)的实例,而这样如果该方法要访问Hadlebars(摩托车把)属性的话,C#就不知道怎么办好了!
对于需要一个父类类
型作参数的方法,可
以传递一个子类的实
例进去。
0 评论:
发表评论