• 里式转换


    里氏转换:

    1.    子类可以赋值给父类 (如果有一个方法需要一个父类作为参数,我们可以 传一个 子类对象)
    2.     如果父类中装的是子类可以强转为子类对象
    3.    子类对象可以调用父类成员,但是父类对象永远只能只能调用父类自己的成员

                    Person p=new Student();
                    如果说子类可以赋值给父类 那我们应该声明一个父类类型去指向子类对象
                    如果说父类中装的是子类对象 可以考虑将父类强转为子类对象用
                    is  转换成功返回 true
                   as  转换成功返回对应的对象 来接收ss
                   students ss =p as students;声明一个students类型的对象
            is的用法:
              if(p is students)
              {
                ((students)p).studentsSayHello();
              }
              else
              {
                cw("失败");
              }
          

     1 namespace _里氏转换
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             ////           1、里氏转换
     8             ////1)、子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替
     9             //  Student s = new Student();
    10             Person p = new Student();//s;
    11 
    12             //string str = string.Join("|",new string[] { "1", "2", "3", "4" });
    13             //Console.WriteLine(str);
    14             //Console.ReadKey();
    15 
    16             ////2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。
    17 
    18             //is的用法
    19             //if (p is Student)
    20             //{
    21             //    Student ss = (Student)p;
    22             //    ss.StudentSayHello();
    23             //}
    24             //else
    25             //{
    26             //    Console.WriteLine("转换失败");
    27             //}
    28             //as的用法
    29             Student t = p as Student;
    30             t.StudentSayHello();
    31             Console.ReadKey();
    32         }
    33     }
    34 
    35     public class Person
    36     {
    37         public void PersonSayHello()
    38         {
    39             Console.WriteLine("我是父类");
    40         }
    41     }
    42     public class Student : Person
    43     {
    44         public void StudentSayHello()
    45         {
    46             Console.WriteLine("我是学生");
    47         }
    48     }
    49     public class Teacher : Person
    50     {
    51         public void TeacherSayHello()
    52         {
    53             Console.WriteLine("我是老师");
    54         }
    55     }
    56 
    57 
    58 }
  • 相关阅读:
    iOS-Core-Animation-Advanced-Techniques(一)
    一个很有借鉴价值的编程故事
    11
    安卓学习路线
    weakSelf和strongSelf
    <二>iOS 开发Push的个人见解 图文并茂 详细到我写的想吐!!!!!!!!!
    <一>iOS 开发Push的个人见解 图文并茂 详细到我写的想吐!!!!!!!!!
    啊哈!算法 学习2 排序
    啊哈!算法 学习1 排序
    转载---CGImageSource对图像数据读取任务的抽象
  • 原文地址:https://www.cnblogs.com/enduo/p/7783991.html
Copyright © 2020-2023  润新知