首页 新闻 搜索 专区 学院

请高手帮忙解释下下面的代码,多谢了!

0
悬赏园豆:40 [已解决问题] 解决于 2011-06-30 16:15

1:

View Code
abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o
= new Class2();
Console.WriteLine(o.MethodA());
}
}
请问,o.MethodA调用的是
2:

View Code
class Class1
{
private static int count = 0;
static Class1()
{
count
++;
}
public Class1()
{
count
++;
}
}
Class1 o1
= new Class1();
Class1 o2
= new Class1();
请问,o1.Count的值是多少?
3:

View Code
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y
=-1;
}
public override void PrintFields(){
Console.WriteLine(
"x={0},y={1}",x,y);
}
当使用new B()创建B的实例时,产生什么输出?

多谢大侠!

Lee_Jelen的主页 Lee_Jelen | 初学一级 | 园豆:180
提问于:2011-04-18 11:24
< >
分享
最佳答案
0

1.首先代码有错误Console.WriteLine(o.MethodA());=>o.MethodA();
   这个例子很好涉及到了不少知识
   (1) 继承---o.MethodA()
      Class2的父类Class1,Class1的父类BaseClass,所以当在BaseClass中定义了MethodA()
      就可以被它的子类调用

   (2) 方法重载
      public virtual void MethodA()
      public void MethodA(string arg) 如果把它改为public override void MethodA(
      那么调用o.MethodA();  调用的就是Class1的MethodA();

   (3) 方法重写
      public override void MethodB()
      如果// new public void MethodB() Mark掉,那么
      那么调用o.MethodB();  调用的就是Class1的MethodB();

   (4) 用new 方法重写
      new public void MethodB()
      调用o.MethodB();  调用的就是Class2的MethodB()
2. 3, 关键有一个静态构造函数static Class1()
    
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作
     http://msdn.microsoft.com/zh-cn/library/k9x6w0hc(v=vs.80).aspx
3.  最后结果x=1, y=0。
     实例化子类时一般是默认调用基类构造函数即使new B()的时候调用
    public A(){PrintFields();} 又是虚方法,真正的执行会在B中做
    public override void PrintFields()

收获园豆:30
MingQ | 菜鸟二级 |园豆:312 | 2011-04-19 15:48
其他回答(2)
0

1 调用的是BaseClass的方法,MethodA无参数

2、3, 静态初始化1次,实例初始化2次

3、

x=1, y=0 A先构造,此时y使用默认值

x=1, y=-1

收获园豆:10
2012 | 园豆:21056 (高人七级) | 2011-04-18 11:52
0

Shift+F5  最好的答案

like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册