多态

最终多态体现为父类引用变量可以指向子类对象。

多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。

在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();

变量名.方法名();

 

多态的优点

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

 class Demo
 5     {
 6         List<Book> books = new List<Book>();
 7 
 8         /// <summary>
 9         /// 测试
10         /// </summary>
11         public void Test()
12         {
13             books.Add(new ComputerBook());
14             books.Add(new JavaBook());
15 
16             foreach (Book item in books)
17             {
18                 if (item is ComputerBook)
19                 {
20                     ((ComputerBook)item).ByReading();
21                 }
22                 if (item is JavaBook)
23                 {
24                     ((JavaBook)item).ByReading();
25                 }
26             }
27         }
28     }
29 
30     /// <summary>
31     /// 书类
32     /// </summary>
33     class Book
34     {
35         
36     }
37 
38     /// <summary>
39     /// 计算机书籍
40     /// </summary>
41     class ComputerBook : Book
42     {
43         /// <summary>
44         /// 被阅读
45         /// </summary>
46         public void ByReading()
47         {
48             Console.WriteLine("我是计算机类书籍,被在校大学生使用。");
49         }
50     }
51 
52     /// <summary>
53     /// Java书籍
54     /// </summary>
55     class JavaBook : Book
56     {
57         /// <summary>
58         /// 被阅读
59         /// </summary>
60         public void ByReading()
61         {
62             Console.WriteLine("我是Java书籍,被在业Java程序员使用。");
63         }
64     }
原文地址:https://www.cnblogs.com/sy130908/p/11417403.html