首页上一页 1 下一页尾页 1 条记录 1/1页
新手菜鸟问题。 关于覆盖类成员问题。
发表在C#图书答疑
2012-08-27
是否精华
是
否
版块置顶:
是
否
关于 覆盖类成员的问题,
假设A函数是虚函数,没有被覆盖;
B函数为虚函数,被覆盖了之后,但是需要什么条件才能访问B函数(虚函数)的?
我读了这个本书 搞不明白,按照我的思路来算顺序问题, 那个覆盖类成员的如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _3_3_4
{
public enum xingbie
{
female=0,
male=1
}
public class a
{
public a()
{
this.name1 = "默认姓名";
this.age1 = 20;
this.gender = xingbie.male;
}
protected String name1;
protected int age1;
protected xingbie gender;
public virtual void b()
{
System.Console.WriteLine("xingbie.b()");
}
}
public class zhongwen : a
{
public zhongwen()
: base()
{
this.name1 = "默认中文名";
}
public new void b()
{
System.Console.WriteLine("zhongwen.b()");
}
}
class Program
{
static void Main(string[] args)
{
a c = new zhongwen();
c.b();
zhongwen d = new zhongwen();
d.b();
}
}
}
运行输出下:
xingbie.b()
zhongwen.b()
这个问题的是 :在a类型变量c变量指向zhongwen对象,但不能访问zhongwen函数; 而d本身就是zhongwen对象,但他为什么能正常访问这zhongwen函数? 但我搞不懂的是。。。因为zhongwen函数已经覆盖了a函数, 而且不能访问zhongwen函数,所以到调用a函数来进行实现。对吧? 可是首先zhongwen函数已经覆盖了a函数,应该输出第一行为zhongwen.b()啊? 怎么变成xingbie.b()?
顺序怎么优先的 ?
假设A函数是虚函数,没有被覆盖;
B函数为虚函数,被覆盖了之后,但是需要什么条件才能访问B函数(虚函数)的?
我读了这个本书 搞不明白,按照我的思路来算顺序问题, 那个覆盖类成员的如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _3_3_4
{
public enum xingbie
{
female=0,
male=1
}
public class a
{
public a()
{
this.name1 = "默认姓名";
this.age1 = 20;
this.gender = xingbie.male;
}
protected String name1;
protected int age1;
protected xingbie gender;
public virtual void b()
{
System.Console.WriteLine("xingbie.b()");
}
}
public class zhongwen : a
{
public zhongwen()
: base()
{
this.name1 = "默认中文名";
}
public new void b()
{
System.Console.WriteLine("zhongwen.b()");
}
}
class Program
{
static void Main(string[] args)
{
a c = new zhongwen();
c.b();
zhongwen d = new zhongwen();
d.b();
}
}
}
运行输出下:
xingbie.b()
zhongwen.b()
这个问题的是 :在a类型变量c变量指向zhongwen对象,但不能访问zhongwen函数; 而d本身就是zhongwen对象,但他为什么能正常访问这zhongwen函数? 但我搞不懂的是。。。因为zhongwen函数已经覆盖了a函数, 而且不能访问zhongwen函数,所以到调用a函数来进行实现。对吧? 可是首先zhongwen函数已经覆盖了a函数,应该输出第一行为zhongwen.b()啊? 怎么变成xingbie.b()?
顺序怎么优先的 ?