C#编程之C#-继承(十一)
小标 2018-09-17 来源 : 阅读 696 评论 0

摘要:本文主要向大家介绍了C#编程之C#-继承(十一),通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之C#-继承(十一),通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

继承概念
  承用于创建可重用、扩展和修改在其他类中定义的行为的新类
  创建一个类的时候,不是要写全新的数据成员和成员函数,可以指定新的类继承一个已经存在的类的成员。已有的类称为基类,新的类称为派生类
  派生类只能有一个直接基类,但一个基类可以有多个直接派生类
  例如ClassAnimal派生出ClassMammals,ClassMammals派生出ClassHuman,则ClassHuman会继承ClassMammals和ClassAnimal中声明的成员


继承特点
  派生类是对基类的扩展,派生类可以添加新的成员,但不能移除已经继承的成员的定义
  继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中声明的成员
  Object类是所有类的基类。C#中的类都直接的或者间接的从Object类继承
  构造函数和析构函数不能被继承,除此之外其他成员能被继承。基类中成员的访问方式只能决定派生类能否访问它们。
  派生类如果定义了与继承而来的成员同名的新成员,那么就可以覆盖已继承的成员,但这兵不是删除了这些成员,只是不能再访问这些成员
  类可以定义虚方法、虚属性及虚索引指示器,它的派生类能够重载这些成员,从而使类可以展示出多态性
  派生类只能从一个类中继承,可以通过接口来实现多重继承


基本语法

1 class MyClass : BaseClass2 {3 // 方法体4 }

  如果在类定义中没有指定基类,默认System.Object是基类


虚方法
  将一个基类函数声明为virtual,则在任何一个派生类中可以重写该函数

1 clss BaseClass2 {3 public virtual void VirtualMethod()4 {5 // 方法体6 }7 }

在派生类中使用override重写函数

1 class MyClass :BaseClass2   {3     public override void VirtualMethod()4     {5       // 方法体6     }7   }

将属性声明为virtual

1 public virtual string Name2 {3   get;set;4 }

 

隐藏方法
  在没有声明virtual和override的情况下,签名相同的方法在基类和派生类中都进行了声明
  在派生类方法中会隐藏基类方法
  但是隐藏方法会造成对于给定类的实例调用错误的方法
  C#语法在编译时会收到这个潜在错误的警告
  所以要隐藏一个方法时用new关键字声明,会避免编译时就发出警告错误

1 class ClassBase 2 { 3   public void BaseMethod() 4   { 5     // 方法体 6   }
7 } 8  9 10 class MyClass : ClassBase11 {12   public new void MyClass()13   {14      // 方法体15   }16 }


抽象类
  C#允许把类和函数声明为abstract
  抽象类不能实例化,而抽象不能直接实现,必须在非抽象的派生类中重写
  如果类包含抽象函数,则该类也是抽象的,也必须声明为抽象的
  抽象类中不能声明非抽象方法,但可以声明其它的非抽象成员
  抽象类语法:  

1 abstract class MyClass2 {3   public abstract void MyMethod();4 }

  抽象方法没有实现,所以方法定义后面是分号,而不是常规的方法块
  抽象类的派生类必须实现所有抽象方法
  当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法


密封类和类成员
  密封类的声明是在类定义前面放置关键字 sealed
  密封类不能用作基类 
  密封类禁止派生
  在对基类的虚成员进行重写的派生类上的类成员、方法、字段、属性或事件可以将该成员声明为密封成员
  方法是在类成员声明中将sealed关键字置于override关键字的前面

1 public sealed class ClassSealed2 {3     // 属性,方法4 }5 6 public class ClassSunSealed : ClassSealed7 {8     public sealed override void SealdMethod() { }9 }

 

接口
  接口是一种引用类型,有点像仅包含抽象成员的抽象基类
  类在从接口实现时必须为该接口的所有成员提供实现。 类虽然只能从一个直接基类派生,但可以实现多个接口
  不能实例化接口,接口即不能有构造函数,也不能有字段。接口定义也不允许包含运算符重载
  接口中不允许声明关于成员的修饰符,但是可以在实现的类中作声明
  接口成员总是公有的
  实现接口的类必须实现接口的所有成员
  接口之间的继承和类的继承方式相同

1 public interface IDisposable2 {3   void Dispose();4 }

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程