Unity 3D游戏开发 - C#面向对象 | 多态之抽象类语法

抽象方法

  • 虚方法 -> 抽象方法
    • 父类里面用 virtual 关键字修饰的方法叫做虚方法,子类可以使用 override 重写该虚方法,也可以不写。
    • 虚方法是有方法体的,当父类中的这个方法已经虚到完全无法确定方法体时,就可以使用另外一种形式来表现,这种形式叫抽象方法。
  • 抽象方法语法 
    • 抽象方法的返回值类型前用关键字 abstract 修饰,且无方法体。
      public abstract void Hello();
    • 抽象方法必须存在于抽象类中。

抽象类

  • 抽象类语法
    • 在定义类的关键字 class 前面加上 abstract 修饰的类就是抽象类。
    • 子类继承抽象类,使用 override 关键字重写父类中所有的抽象方法。
  • 抽象类注意事项
    • 抽象类中不一定要有抽象方法,但抽象方法必须存在于抽象类中。
    • 抽象类不能被实例化,因为抽象类中有抽象方法(无方法体),如果真能实例化抽象类的话,调用这些无方法体的方法没有意义。

使用场景

  • 当父类中的方法不知道如何去实现时,可以考虑将父类写成抽象类,将方法写成抽象方法。
  • 如果父类中的方法有默认实现(即有方法体),且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法实现多态。
  • 如果父类中的方法没有默认实现,且父类不需要被实例化,则可以将该类定义为抽象类。

猜你喜欢

转载自blog.csdn.net/weixin_41232641/article/details/82716871
今日推荐