首页 > Windows开发 > 详细

41.C#--里氏转换法--创建10个对象 通过一个循环 去调用他们各自打招呼的方法

时间:2019-04-29 01:44:19      阅读:219      评论:0      收藏:0      [点我收藏+]
namespace _41.里氏转换法
{
class Program
{
//创建10个对象 通过一个循环 去调用他们各自打招呼的方法
//1、里氏转换
//1)、子类可以赋值给父类
//2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。
static void Main(string[] args)
{
Person[] pers = new Person[10]; //新建10个对象
Random r = new Random(); //声明一个随机数
for (int i = 0; i <pers.Length; i++)//通过循环给Person赋值
{
int rNmuber = r.Next(1, 8);
switch (rNmuber)
{
case 1:pers[i] = new Student(); //当1-7时,子类赋值给父类
break;
case 2:pers[i] = new Teacher();
break;
case 3:pers[i] = new Doctor();
break;
case 4:pers[i] = new Police();
break;
case 5:pers[i] = new Nurse();
break;
case 6:pers[i] = new Driver();
break;
default:pers[i] = new Person();
break;

            }
        }
        for (int i = 0; i < pers.Length; i++)  // 通过一个for循环进行取值
        {
            if(pers[i] is Student)  //如果可以转成student
            {
                ((Student)pers[i]).StudentSayHello(); //父类强转成子类,然后调用打招呼方法
            }
            else if(pers[i] is Teacher)   //如果可以转成Teacher
            {
                ((Teacher)pers[i]).TeacherSayhello();//父类强转成子类,然后调用打招呼方法
            }

            else if(pers[i] is Doctor)
            {
                ((Doctor)pers[i]).DoctorSayHello(); //父类强转成子类,然后调用打招呼方法
            }

            else if(pers[i] is Police)
            {
                ((Police)pers[i]).PoliceSayHello(); //父类强转成子类,然后调用打招呼方法
            }

            else if(pers[i] is Nurse)
            {
                ((Nurse)pers[i]).NurseSayHello(); //父类强转成子类,然后调用打招呼方法
            }
            else if(pers[i] is Driver)
            {
                ((Driver)pers[i]).DriverSayHello(); //父类强转成子类,然后调用打招呼方法
            }
            else
            { 
                pers[i].PersonSayHello(); 
            }

        }
        Console.ReadKey();

    }

    public class Person  //父类
    {
        public void PersonSayHello()
        {
            Console.WriteLine("我是父类");
        }
    }
    public class Student:Person
    {
        public void StudentSayHello()
        {
            Console.WriteLine("我是学生");
        }
    }
    public class Teacher : Person
    {
        public void TeacherSayhello()
        {
            Console.WriteLine("我是老师");
        }
    }
    public class Doctor:Person
    {
        public void DoctorSayHello()
        {
            Console.WriteLine("我是医生");
        }
    }
    public class Police : Person
    {
        public void PoliceSayHello()
        {
            Console.WriteLine("我是警察");
        }
    }
    public class Nurse : Person
    {
        public void NurseSayHello()
        {
            Console.WriteLine("我是护士");
        }
    }
    public class Driver:Person
    {
        public void DriverSayHello()
        {
            Console.WriteLine("我是司机");
        }
    }
}

}

41.C#--里氏转换法--创建10个对象 通过一个循环 去调用他们各自打招呼的方法

原文:https://blog.51cto.com/12679593/2386359

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!