c# 在派生类方法中 调用基类的方法
class a
{
static int x=1;
virtual public void m(){Console.Write(x);}
}
class b:a
{
new static int x=2;
override public void m(){base.m();}
}
b.m(); 输出的是1;
把static去掉,输出2;
-------------------------------------------------
在派生类调用基类的方法.
非静态数据使用派生类的,
而静态数据却又使用基类的.
为什么要这样设定???
这样不是很混乱么?
------解决方案--------------------不是静态数据和非静态数据的问题,而是你的 x在派生类是new过的,而方法是override的
------解决方案--------------------你把override去掉就是一样的了,而static的不能override。所以没有什么混乱的地方。
------解决方案--------------------而且你的命名很不规范,类名,public的方法首字母请大写
------解决方案--------------------class a
{
static int x=1;
virtual public void m(){Console.Write(x);}
}
class b:a
{
new static int x=2;
override public void m(){this.m();}
}
------解决方案--------------------刚才没看清楚,请给出所有结果所对应的代码……
------解决方案--------------------我建议你把你的代码贴全面些
------解决方案--------------------试试。是不是有编译警告?
class a
{
static int x = 1;
virtual public int m() { return x; }
}
class b : a
{
new static int x = 2;
override public int m() { return m(); }
}
------解决方案-----------------------输出结果还是1啊。不是2---
static void CallA()
{
b b1= new b();
b1.m();
}
class a
{
int x = 1;
virtual public void m() { Console.WriteLine(x); }
}
class b : a
{
new int x = 2;
override public void m() { base.m(); }
}
------解决方案--------------------using System;
class a
{
int x = 1;
virtual public void m() { Console.Write(x); }
}
class b : a
{
new int x = 2;
override public void m() { base.m(); }
}
public class Demo
{
public static void Main()
{
b b1 = new b();
b1.m();
}
}
===========================
输出1
using System;
class a
{
static int x = 1;
virtual public void m() { Console.Write(x); }
}
class b : a
{
new static int x = 2;
override public void m() { base.m(); }
}
public class Demo
{
public static void Main()
{
b b1 = new b();
b1.m();
}
}
=============================
输出1
你的Main函数怎么写的?
------解决方案--------------------为什么 我总 是输出 1