1 C#基础virtual,override和new的区别1_m0_55413404的博客-CSDN博客
2 C#基础virtual,override和new的区别2_m0_55413404的博客-CSDN博客
3 C#基础virtual,override和new的区别3_m0_55413404的博客-CSDN博客
4 C#基础virtual,override和new的区别4_m0_55413404的博客-CSDN博客
实例化B b = new B();输出什么?
//试题1
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);
}
}
//试题2
class A
{
int x=0;
int y=0;
public A()
{
PrintFields();
}
public virtual void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
PrintFields();
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
//试题3
class A
{
int x = 0;
int y = 0;
public A()
{
PrintFields();
}
public virtual void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
PrintFields();
}
public new void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
答案:
试题一
x=1,y=0
试题二
x=1,y=0
x=1,y=-1
试题三
x=0,y=0
x=1,y=-1
注:运行A的方法,用A的参数
运行B的方法,用B的参数
试题二运行两次B的方法
试题三运行一次A的方法,一次B的方法