学习oop多态
1.方法重载
2.方法重写
3.里氏替换原则
方法重载:构造函数属于特殊的方法重载
方法重载是指同一个类中相同方法的不同行为
方法重载的特点:
1.方法名必须相同
2.参数列表必须不相同(这里的不相同是参数类型,参数个数,以及参数顺序)
3.在有相同参数列表的个数的前提下,方法返回值不作为判断方法是否重载的依据.
方法的重写:是指在继承关系中不同类之间方法之间的比较和研究
第一个关键字:vietual(虚)还有abstrac抽象方法的重写
用vietual修饰的方法称之为虚方法。
virtual一般情况下和override需要成对出现。
如果子类重写使用了override,则父类必须拥有virtual修饰的方法或则abstract的抽象方法
反过来不一定成立,因为我们还有方法覆盖
第二个关键字:override(重写)
为什么要使用方法重写呢?
1.使用虚方法其实就是对目前的程序不是很满意,暂时方法功能是实现的,希望后面的程序元通过重写父类方法的方式,进行功能上的优化。
2.可以通过继承系统提供的类,去修改系统类中提供的虚方法
方法重写需要注意的地方:
1.不能重写父类中用sealed修饰的方法
2.不能重写父类中用static修饰的方法
3.如果父类中存在abstact方法,子类必须重写
密封类:断子绝孙类
如果我们的类是密封类,那么就意味着不能有任何派生类.
但是密封类是可以拥有父类滴.
c#中密封类使用sealed关键字,sealed可以将类或者方法声明为密封类或则密封方法.
对于密封类来说,表示不能继承该类
对于密封方法来说,表示不能重写该方法
密封类不能使用protected(因为其没有派生类).
密封类不能使用virtual.(使用该方法必须有子类)
密封类的不可继承性,所以密封类不能声明为抽象的,即sealed关键字不能和abstract共同使用
如果用sealed修饰方法.必须要遵循一个条件:这个类必须有父类,并且重写了父类的某个虚方法才可以用sealed修饰,否则是绝对不行滴.
密封类的作用就是防止外界修改本类,破坏类的内部构造.