里氏转换

 

static void Main(string[] args)
        {
            /*
             里氏转换
             *1、子类可以赋值给父类(如果一个有一个方法需要父类作为参数,我们可以传递一个子类对象)
             *2、如果父类中装的是子类对象,则可以将这个父类强转为子类对象。
             */

            Person p = new Student();//子类赋值给父类

            //用is转:is是转换的意思,转换成功返回true,转换失败返回flase
            //if (p is Student)
            //{
            //    ((Student)p).StudentSayHello();//父类强转为子类对象
            //}
            //else
            //{
            //    Console.WriteLine("转换失败");
            //}
            //Console.ReadKey();

            //用as转:as转换成功返回对应的对象,转换失败返回null
            Student s = p as Student;
            s.StudentSayHello();
            Console.ReadKey();
        }
        public class Person
            {
                public void PersonSayHello()
                {
                    Console.WriteLine("我是人类");
                }
            }

            public class Student : Person
            {
                public void StudentSayHello()
                {
                    Console.WriteLine("我是学生");
                }
            }
    }
}

 

posted @ 2023-02-07 10:22  春哥博客  阅读(36)  评论(0)    收藏  举报