c#里氏转换

里氏转换
 1.子类可以赋值给父类
1)如果一个地方需要一个父类作为参数,我们可以给一个子类代替

class Program
    {
        static void Main(string[] args)
        {
            //将子类转换成父类
            Student s = new Student();
            Person p = s;
            //如果一个地方需要父类,可以给一个子类代替
            //这里join中的第二个参数要求是object类型的数组
            string str = string.Join("|", new char[] { 'm', 'k' });
            Console.WriteLine(str);
            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("我是老师");
        }
    }

 

2.如果父类中装的是子类对象,那么可以将这个父类转化成子类对象

 class Program
    {
        static void Main(string[] args)
        {
            //将子类转换成父类
            Student s = new Student();
            Person p = s;
            //如果父类中装的是子类的对象,那么可以将这个父类转换成子类
            Student ss = (Student)p;
            ss.StudentSayHello();
            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("我是老师");
        }
    }

 

is 表示类型转换,如果转化成功,返回true,如果转化失败,则返回false

 static void Main(string[] args)
        {
            //将子类转换成父类
            Student s = new Student();
            Person p = s;
            if(p is Student)
            {
                Student ss = (Student)p;
                ss.StudentSayHello();
            }
            else
            {
                Console.WriteLine("转换失败");
            }
            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("我是老师");
        }
    }

 


as 表示类型转换,如果能够转换就返回对应的对象,如果失败,则返回null

class Program
    {
        static void Main(string[] args)
        {
            //将子类转换成父类
            Student s = new Student();
            Person p = s;
            Student ss = p as Student;
            ss.StudentSayHello();
            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("我是老师");
        }
    }

 

posted @ 2021-11-29 17:07  无敌小金刚  阅读(131)  评论(0)    收藏  举报