c#继承与多态

  1. 一个子类不可以继承多个父类,继承的两个特性:传递性,单根性。
    父类可以有多个子类,子类只能有一个父类。
  2. 多态就是同一操作作用于不同类的实例,不同的类将进行不同的解释,最后产生不同的结果。
  3. 任何类都可以从另外一个类继承,这就是说这个类拥有它继承除私有成员外的所有成员。
  4. 调用父类的构造函数时:
    在默认情况下c#中使用new创建子类对象时,首先调用父类无参构造函数,在调用子类构造函数 最后在输出调用的类。例题p84.
  5. 使用base关键字调用父类构造函数:
    有时为了数据的安全性,并没有将父类的所有成员都暴露给子类,如私有成员的字段或属性,但使用者却希望在构造子类对象时,初始化父类的私有字段或属性。这时只需要在父类中定义相关的构造函数,并在子类中使用base调用即可。
    这里的base可以认为它是父类的引用,base()就代表父类构造函数,在子类中还可以使用base调用父类的成员,且只能在子类中使用。
  6. C#支持的继承传递没有限制传递次数,但可以使用关键字 sealed 定义类,让该类无法派生子类,这个就是c#中的密封类。
  7. 访问与隐藏成员
    使用 new修饰符可以显示的隐藏父类继承的成员,若要隐藏继承成员,须使用相同名称在派生类中声明该成员,并用new修饰符修饰它
    解决前面的问题可以使用new关键字定义子类中的成员,同时可以使用base访问父类的成员,这样程序就可以区分该同名成员是子类特有的还是继承自父类。
  8. 强制类型转换:
    第一个: ((父类)变量).方法名
    第二个: if(变量名 is 父类)
    {
    //将子类强制转换为父类后,调用隐藏的方法
    (子类 as 父类).方法名
    }
  9. 多态
    虚方法:c#中的virtual 关键字,用于将方法定义为支持多态的虚方法。被关键字 virtual定义的类方法。
    C#中override关键字,用于子类中修改父类方法的实现。采用override重写的方法,在父类必须定义为 virtual(虚方法)和abstract(抽象方法)
    Virtual关键字使用规则:
    使用 virtual定义 的类成员可称为 虚成员,子类采用override进行重写成为虚成员重写。
    使用virtual定义类成员,以及使用override重写父类成员需要注意:
  10. 父类的虚成员被重写时,需要使用相同的访问修饰。
  11. 在类的成员声明前加上 virtual关键字后,不能再有 abstract,static或者override 关键字。
  12. 如果子类使用new 隐藏父类的成员,就不能在该成员声明中使用 override关键字。
  13. New,static和virtual关键字不能与override 一同使用。
    Object类中的方法:
    C#语言永昌不要求类声明从object类中继承。因为继承是隐式的,由于c#中的所有类均从object派生,所以object类中定义的公有方法可用于系统中的所有对象,派生类可以重写某些方法,object包含如下公共方法:
  14. public virtual bool equals(object ob):用于判断指定的对象是否等于调用方法的对象。
  15. Public virtual bool equals(object ob1,object ob2):用于判断当前两个对象实例ob1,ob2是否相同。
  16. Public virtual int Gethashcode();返回当前对象相关的哈希码。适合哈希算法和数据结构中使用。
  17. Public virtual string tostring(); 返回描述类的事例的可读文本字符串 。
  18. Public static bool referenceequals(obj ob1,object ob2):静态方法,判断对象ob1和ob2是否为用一个对象。
  19. Public type gettype():返回当前对象的数据类型。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值