C#-多态

打印 上一主题 下一主题

主题 974|帖子 974|积分 2922

多态
静态多态性,重载
同一个方法中有多个相同名称的方法,但参数不一样。
在编译阶段(程序未运行的时候),函数之间就产生了一对一的关系。
减少函数的命名,多个相同的函数可以使用相同的命名。
  1. Mathf f = new Mathf();
  2. f.Add(10001);
  3. class Mathf {
  4.     public void Add(float a) {
  5.         
  6.     }
  7.     public void Add(float a, float b) {
  8.         
  9.     }
  10. }
复制代码
动态多态性 重写
父类使用 virtual 形成虚方法,子类使用override冲洗对父类的方法进行重写。
  1. Animal a = new BigGoose();
  2. a.Run();// 调用的是BigGoose下的Run函数
  3. Animal b = new TheGiantPanda();
  4. b.Run();// 调用的是Animail下的Run函数
  5. ((TheGiantPanda)b).Run();// 调用的是TheGianPanda下的Run函数。
  6. // 父类动物
  7. class Animal {
  8.     public virtual void Run() {
  9.         Console.WriteLine("父类的逻辑");
  10.     }
  11. }
  12. class BigGoose :Animal {
  13.     // 没有对Run进行重写,使用服了的Run逻辑。
  14. }
  15. class People : Animal {
  16.     public override void Run() {
  17.         Console.WriteLine("");// 对父类的Run进行重写,使用自己的逻辑。
  18.     }
  19. }
  20. class ChineseAlligator:Animal {
  21.     public override void Run() {
  22.         base.Run();
  23.         Console.WriteLine("自己的逻辑");// 同时使用父类和自己的逻辑。
  24.     }
  25. }
  26. class TheGiantPanda:Animal {
  27.     public new void Run() {
  28.         Console.WriteLine("重定义");// 通过New关键字使Run方法实现重定义,当类型为父类调用父类的Run函数,当类型为子类的时候调用的是子类的Run函数。可以在调用前先将类型进行转换。
  29.     }
  30. }
复制代码
抽象类
抽象类不能进行 New (不能进行实现)。
Window w = new Window();因为是抽象类故不被允许。
Window w1 = new Login();可以进行创建,因为创建的具体实例是Login。
  1. abstract class Window {
  2.     // 抽象方法只能存在抽象类中
  3.     public abstract void Open();
  4.     public abstract void Close();
  5.     // 一般方法也可以存在抽象类中
  6.     public void Refresh() {
  7.         Console.WriteLine("刷新");
  8.     }
  9. }
  10. class Login : Window {
  11.     // 继承抽象类必须要实现对应的抽象方法
  12.     public override void Close() {
  13.         Console.WriteLine("登录界面打开");
  14.     }
  15.     public override void Open() {
  16.         Console.WriteLine("登录界面关闭");   
  17.     }
  18. }
复制代码
抽象类主要用于程序框架,通常是主程序考虑抽象概念。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表