首先我们建立一个Person类,和几个类继承person
public class Person {
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
public class American : Person {
//写一个sayNationality()方法说出自己的国籍
public void sayNationality()
{
Console.WriteLine("USA");
}
}
public class Japanese : Person
{
public void sayNationality()
{
Console.WriteLine("日本");
}
}
public class Chinese : Person
{
public void sayNationality()
{
Console.WriteLine("中国");
}
}
public class faguo : Person
{
public void sayNationality()
{
Console.WriteLine("法国");
}
}
2.让每一个子类说出自己国家的国籍
3.遍历出结果
class Program
{
static void Main(string[] args) {
//Person p = new American();
//p.sayNationality();
Person[] pers = new Person[6];
pers[0] = new American();
pers[1] = new Chinese();
pers[2] = new Japanese();
pers[3] = new American();
pers[4] = new Chinese();
pers[5] = new faguo();
//遍历数组
for (int i = 0; i < pers.Length; i++)
{
//简单的几个国家可以使用if else判断,但是如果想让程序具有可扩展性,那么使用方法重载
#region 不能忍的代码
//if (pers[i] is American) {
// ((American)pers[i]).sayNationality();
//}
//else if (pers[i] is Chinese) {
// ((Chinese)pers[i]).sayNationality();
//}
//else if (pers[i] is Japanese)
//{
// ((Japanese)pers[i]).sayNationality();
//}
//希望一句话解决
#endregion
}
Console.ReadKey();
}
}
4.如果是只有几条简单的数据时,我们可以使用循环打印,如果很多条数据,为了程序的扩展性则需要使用虚方法实现多态
1.在父类里写虚方法
public class Person {
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
使用virtual关键字实现虚方法
public virtual void sayNationality()
{
Console.WriteLine("地球人");
}
}
2.在每一个子类中对虚方法进行重写
public class American : Person {
//说出自己的国籍通过override关键字重写子类,例举一个
public override void sayNationality()
{
Console.WriteLine("USA");
}
}
3.在遍历结果的时候只需要调用父类中的虚方法就可以实现输出对应国家的名字,不需要繁琐的判断
class Program
{
同上
//遍历数组
for (int i = 0; i < pers.Length; i++)
{
//简单的几个国家可以使用if else判断,但是如果想让程序具有可扩展性,那么使用方法重载
#region 不能忍的代码
//if (pers[i] is American) {
// ((American)pers[i]).sayNationality();
//}
//else if (pers[i] is Chinese) {
// ((Chinese)pers[i]).sayNationality();
//}
//else if (pers[i] is Japanese)
//{
// ((Japanese)pers[i]).sayNationality();
//}
//希望一句话解决
#endregion
pers[i].sayNationality();
}
Console.ReadKey();
}
}