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("我是司机"); } } } }