里氏替换原则

概念

  • 任何父类出现的地方, 子类都可以替代

    表现

  • 父类容器装子类对象, 因为子类对象包含了父类的所有内容

    作用

  • 方便进行对象存储和管理

  1. using System;
  2. namespace Enumeration {
  3. enum E_EXAMPLE {
  4. A, // 0 如果不声明值 则第一个值默认是0 下面依次累加
  5. B, // 1
  6. C, // 2
  7. D = 100, // 如果在中途赋值 后面的值基于赋值后的值进行累加
  8. E, // 101
  9. F, // 102
  10. }
  11. class GameObject {
  12. }
  13. class Player : GameObject {
  14. public void Attack () {
  15. Console.WriteLine("player atk");
  16. }
  17. }
  18. class Mosnster : GameObject {
  19. public void Attack () {
  20. Console.WriteLine("mosnster atk");
  21. }
  22. }
  23. class Boss : GameObject {
  24. public void Attack () {
  25. Console.WriteLine("boss atk");
  26. }
  27. }
  28. class Enumeration {
  29. static void Main (string[] args) {
  30. GameObject player = new Player();
  31. GameObject monster = new Mosnster();
  32. GameObject boss = new Boss();
  33. GameObject[] objects = new GameObject[] { new Player(), new Mosnster { }, new Boss { } };
  34. // is: 判断一个对象是否是指定类对象
  35. // 返回: bool true false
  36. if (player is Player) {
  37. Console.WriteLine(1);
  38. (player as Player).Attack();
  39. } else {
  40. Console.WriteLine(2);
  41. }
  42. // as : 将一个对象转换为指定类对象
  43. // 返回: 指定类对象 失败时返回 null
  44. Player p = monster as Player;
  45. Console.WriteLine(p);
  46. }
  47. }
  48. }