里式转换

2018-06-17 19:04:28来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

里氏转换:

  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 }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:c#的托管代码和非托管代码的理解

下一篇:先记下这些小毛病,后面在慢慢回味-第一篇