zoukankan      html  css  js  c++  java
  • C#抽象类和虚方法

    抽象类与抽象方法:
    1.使用关键字abstract修饰的类,称为抽象类.
    2.抽象类只是用到一个类所具有的行为,不能单独通过创建对象来使用.使用new是错误的.
    3.抽象类中可以有抽象方法,也可以没有任何抽象方法.
    4.抽象类不能是静态的(static)或者密封的(sealed)

    抽象方法的概念与使用要点:
    1.在抽象类中使用abstract修饰的方法,称为抽象方法.
    2.抽象方法必须在抽象类中定义,不能再普通类中使用.
    3.抽象方法只能是一个方法的申明,不能有任何的方法体.
    4.抽象方法仅仅表示一个应该具有的行为,具体实现由子类实现.
    5.抽象方法在子类中被实现(重写)必须使用关键字override.
    6.子类必须重写父类的所有抽象方法,除非子类本身也是抽象类.


    多态:
    不同对象,接收相同消息,产生不同的行为,称为多态。

    使用继承实现多态:
    父类中必须有抽象方法或虚方法.
    子类必须重写父类中的抽象方法或虚方法.
    子类对象必须转换成父类对象去使用.

    LSP:李氏替换原则:
    1.子类的对象能够替换其父类.
    2.父类对象不能替换子类.
    3.父类的方法都要在子类中实现或者重写.

    is与as操作符:
    is,检查对象是否与指定类型兼容,如果转换失败程序中断.
    as 用于在兼容的引用类型之间执行转换,转换失败返回null.

    抽象方法仅仅是声明,没有任何实现内容。
    抽象方法必须在子类中重写以后才有使用价值.

    针对抽象方法问题引出:
    如果需要在父类中提供一个方法,该方法有自己的方法体,子类根据自己的需求决定是否重写该方法,而不是必须重写.

    父类方法定义成:virtual,子类可以重写也可以不重写.
    虚方法如同抽象方法一样,可以实现多态.
    子类没有重写虚方法时,直接调用父类的虚方法.

    构造方法,用来对象创建过程中初始化。

    Equals默认支持的是引用相等,想让对象相同,重写Equals

    虚方法和抽象方法
    用virtural修饰,要有方法体,哪怕是一个分号,可以被子类override,除了密封类都可以写
    用abstract修饰,不允许有方法体,必须被子类override,只能在抽象类中.

    关于Equals()虚方法:
    对于字符串和值类型能够自动比较是否相等.
    对于对象比较必须重写后才有意义.

    关于ToString()虚方法:
    默认返回该对象的完全限定类型名称,可根据需要重写.
    而对于值类型,因为重写的该方法,则返回变量值的字符串表示.

  • 相关阅读:
    前端学习(1)~html标签讲解(一)
    前端学习(0)~vscode工具使用
    微服务之部署
    分解单块系统
    c#之线程基础(一)
    如何在windows 7 上使用docker
    CodeForces 995B Suit and Tie(贪心,暴力)
    CodeForces 993B Open Communication(STL 模拟)
    CodeForces 993A Two Squares(数学 几何)
    CodeForces 996B World Cup(思维)
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/12687999.html
Copyright © 2011-2022 走看看