• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中继承和多态

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.继承的概念

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能。

  为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总是希望能够利用前人或自己以前的开发成果,同时又希望在

自己的开发过程中能够有足够的灵活性,不拘泥于复用的模块。C#这种完全面向对象的程序设计语言提供了两个重要的特性--

继承性inheritance 和多态性polymorphism。

  继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得

新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。

  现实世界中的许多实体之间不是相互孤立的,它们往往具有共同的特征也存在内在的差别。人们可以采用层次结构来描述这些实体之间的

相似之处和不同之处。

C#中,如果一个类后面通过冒号又跟了另外一个类,那么我们就称冒号前面的类

为子类,冒号后面的类为父类。这种书写类的方式放映出来的关系就称为类的继承关系。

子类:派生类

父类:基类或者超类

4.满足什么条件的类可以使用继承??

解析:满足is a关系的两个类可以使用继承。

案例:经理is a a 员工

     程序员  is a 员工

     学生 is  a Person

5.如果new一个子类对象,那么有如下执行流程

   01.先定位到子类对应构造函数,没有执行子类的方法体

   02.转向了父类的无参构造函数,执行父类构造方法体

   03.转向了子类的方法体继续执行。

点题的话:如果在子类构造中,没有使用base显示调用父类的构造,那么系统也会自动调用父类的无参构造

    01.base代表父类对象,如果base():调用父类的构造函数

    02.base代表的是方法调用,是不需要参数类型的

6.通过base调用父类构造函数注意点

解析:01.通过base调用父类构造函数只能书写在子类的构造后

     02.通过base调用父类构造函数参数顺序和父类的构造参数一致

 

7.注意:方式一:new Student("张靓颖",20);

 

和方式二:new Student

 

{

 

   Name="张靓颖"Age=20

 

}区别?

 

解析:最终都能实现对类中的属性赋值。

 

但是赋值的原理不同,

 

方式一:直接调用该类的带参构造赋值。

 

  01.先通过无参构造创建出类的对象

 

  02.对象名.属性名的方式赋值

 

8.访问修饰符

 

  public:在任何位置都可以访问,甚至是跨程序集都可以访问。

 

  private:只能当前类的花括号中访问。

 

  protected:只能在当前类,当前类的子类,子类的子类(孙子类)中可以访问。

 

 

 

 

7.注意:方式一:new Student("张靓颖",20);

和方式二:new Student

{

   Name="张靓颖"Age=20

}区别?

解析:最终都能实现对类中的属性赋值。

但是赋值的原理不同,

方式一:直接调用该类的带参构造赋值。

  01.先通过无参构造创建出类的对象

  02.对象名.属性名的方式赋值

8.访问修饰符

  public:在任何位置都可以访问,甚至是跨程序集都可以访问。

  private:只能当前类的花括号中访问。

  protected:只能在当前类,当前类的子类,子类的子类(孙子类)中可以访问。

 

 

9.继承的传递性

如果一个类B继承自类A,而类C又继承类B,那么类C也可以访问到类A中非私有成员

10.继承的单根性 C#不支持多继承 Java也不支持多继承)

在很久很久以前,有一个叫C++的家伙,他是支持多继承的语言,突然有一天,10个程序员用多继承,有9个都用错了,后续的JavaC#语言因此不再支持多继承。

C#中,一个类只能有一个父类C#Java都不支持多继承。要想使用多继承,那么请您使用接口。。

11.遍历窗体上所有的控件,判断是不是文本框

foreach(Control c in this.Controls)

{

    if(c is TextBox)

{

  ((TextBox)c).Text="";

}

}

is a 判断一个对象是否是某个类型。

12.继承的价值

01.模拟现实世界的关系

02.便于重用和扩展已彻底测试的代码,且无需修改

03.结构更清晰

13.多态

    不同的对象对于同一个操作,做出的响应不同,那么这种情况在面向对象编程中就称为多态

使用多态的目的?

解析:使用多态就是为了统一调用

 

14.实现多态三种方式:

方式一:通过虚方法实现多态

实现多态的步骤

   01.在父类中通过virtual关键字定义一个虚方法

   02.在子类中通过override关键字对父类中的虚方法进行重写

   03.调用的时候,调用的是子类的方法

  目前为止,我们学两种:

   第一种:虚方法实现多态

通过在普通类Person中用Virtual关键字定义虚方法SayHello(),然后在子类Student中通过override关键字对父类的SayHello()方法进行重写。

如下:

 

Student

 

Teacher

 

Main方法中调用

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++在dynamic_cast<>用法发布时间:2022-07-13
下一篇:
C++类的成员函数对应的链接器符号的解析发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap