面向对象--多态性

   1: 方法重载              [静态多态性]   

          1.1) 方法(函数)签名

                   参数的数量

                   参数的类型

                   参数的顺序

          1.2) 构造函数重载

   2: 继承关系下的方法重载(即重写)  [动态多态性]

          2.1) 使用 virtual 与override 关键字.

               a) 基类不为virtual 的方法,派生类不能使用override 进行重写。

               b) override可加可不加意义不同,假如派生类不用override 关键字来声明方法,就不会覆盖基类方法,

                  它只会成为和基类的方法完全不相关的另一个方法的实现。

               c)不能override父类的static方法

          2.2) 使用 sealed/partial 关键字.

               密封类表示不能继承该类。

               密封方法表示不能重写该方法。

               [可以覆盖父类的密封方法,与父类中的方法是否为密封的没有关系。]

          2.3)     

               1>: 不能重写父类中的sealed方法.

                2>: 不能重写父类中的static 方法.

                3>: 子类必须重写父类中的抽象方法.

                                            

   3: 抽象类/抽象方法  (abstract /override)

          定义基类中的抽象方法,则派生类必须重载(重写)该方法。

          抽象方法一定属于抽象类,但抽象类不一定要包含抽象方法。

          抽象方法不能是私有的,而且抽象方法及其重载方法的访问限制应当相同。

          抽象方法不能使用virtual 关键字进行修饰。

      抽象类不能是密封或静态的

   4: 接口/多重接口

          接口中不允许指定任何访问修饰符,(隐式为public)不需要访问修饰符!

          接口中不能包含字段

          接口和抽象类不能被实例化。

          接口的任何派生实现类,都必须实现接口的所有方法!

          类不允许多继承,但接口允许多继承!

          接口不允许有任何构造函数或字段。

          接口成员总是公共的,不能声明虚拟和静态的。

          好的编程习惯: 使用接口名作为方法的前缀,这称为“显示接口实现”!

                         对于明确指定了接口的方法,就不再允许使用修饰符,一律为 public. !

          如何理解接口:  接口为“公共契约”

   5: 通过接口类引用一个类 (即: 面向接口编程)

总结时注意区分:

    1) 方法覆盖、方法重载、方法重写的联系与区别点。

    2) 不能同时使用 virtual 和 override 修饰一个方法。

    3) 虚拟方法不能是私有的。

    4) 对于 interface 、virtual、override、sealed 关键字的理解:

        interface: 引入一个方法的名称

        virtual:   方法的第一个实现。

        override:  方法的另一个实现。

        sealed:    方法的最后一个实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值