类文件:using System;
using System.Collections.Generic;
using System.Text;namespace testoo
{
public class student
{
public string name;
public string sex;
public yuanxi myyuanxi;
} public abstract class yuanxi
{
public string name;
public string baodao(student sd)
{
return sd.name + ",来"+name+"这里报道了!";
}
public virtual string jiaoqian(student sd)
{
return sd.name + "去" + caiwu.name + "交钱";
}
} public class caiwu
{
public static string name = "财务室";
} public class wuli : yuanxi
{
public new string name = "物理系";
} public class hangkong : yuanxi
{
public new string name = "航空系";
public override string jiaoqian(student sd)
{
return sd.name + "去" + name + "交钱";
}
}
}
winform内容: private void Form1_Load(object sender, EventArgs e)
{
testoo.student me = new student();
me.name = "张学友";
me.myyuanxi = new testoo.hangkong();
MessageBox.Show(me.myyuanxi.jiaoqian(me));
MessageBox.Show(me.myyuanxi.baodao(me));
}
说明 jiaoqian 交钱这个方法,是虚方法,可以被不同的院系覆写
但是 baodao 报道 这个方法对于所以院系来说都是一样的。只是具体的院系的名字不同.所以没有定为可覆写.
现在因为 抽象类 public abstract class yuanxi 是没有名字的。他的名字是在具体的院系中定义的。
现在抽象类 yuanxi的 baodao 这个方法中的name不会被继承它的类的name覆写.大家运行一下就知道了。
报道这个方法 显示的内容是 "张学友来这里报名了" 没有院系的名字。
现在我想怎么不改动 抽象类的 baodao这个方法(不改为虚函数,不想让他覆写,因为方法都一样。只是一个内部成员变量不一样) 来实现我想要的效果呢?
using System.Collections.Generic;
using System.Text;namespace testoo
{
public class student
{
public string name;
public string sex;
public yuanxi myyuanxi;
} public abstract class yuanxi
{
public string name;
public string baodao(student sd)
{
return sd.name + ",来"+name+"这里报道了!";
}
public virtual string jiaoqian(student sd)
{
return sd.name + "去" + caiwu.name + "交钱";
}
} public class caiwu
{
public static string name = "财务室";
} public class wuli : yuanxi
{
public new string name = "物理系";
} public class hangkong : yuanxi
{
public new string name = "航空系";
public override string jiaoqian(student sd)
{
return sd.name + "去" + name + "交钱";
}
}
}
winform内容: private void Form1_Load(object sender, EventArgs e)
{
testoo.student me = new student();
me.name = "张学友";
me.myyuanxi = new testoo.hangkong();
MessageBox.Show(me.myyuanxi.jiaoqian(me));
MessageBox.Show(me.myyuanxi.baodao(me));
}
说明 jiaoqian 交钱这个方法,是虚方法,可以被不同的院系覆写
但是 baodao 报道 这个方法对于所以院系来说都是一样的。只是具体的院系的名字不同.所以没有定为可覆写.
现在因为 抽象类 public abstract class yuanxi 是没有名字的。他的名字是在具体的院系中定义的。
现在抽象类 yuanxi的 baodao 这个方法中的name不会被继承它的类的name覆写.大家运行一下就知道了。
报道这个方法 显示的内容是 "张学友来这里报名了" 没有院系的名字。
现在我想怎么不改动 抽象类的 baodao这个方法(不改为虚函数,不想让他覆写,因为方法都一样。只是一个内部成员变量不一样) 来实现我想要的效果呢?
注意一下new 关键字的用法,这样用不对,new 是用来解决版本了冲突的
把hangkong 类改成如下:
public class hangkong : yuanxi
{
//public new string name = "航空系";
public hangkong()
{
name = "航空系";
}
public override string jiaoqian(student sd)
{
return sd.name + "去" + name + "交钱";
}
}