前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是类的继承?

什么是类的继承?

作者头像
高一峰
修改2020-09-22 14:02:13
2.5K0
修改2020-09-22 14:02:13
举报
文章被收录于专栏:高渡号外高渡号外

什么是类的继承?

(新手编程1001问之C#编程基础)


前面我们谈到过类的封装。其实,类的封装、继承和多态,是面向对象编程最重要的形式和方法。今天咱们就这个问题,继续聊聊类的继承。

在人类的社会关系中,继承行为通常发生在父子关系里。它描述了这样一种形态,就是孩子不仅可以拥有自己创造的财富,还可以从父辈那里获得一部分由父辈创造的财富。

那么,我们在编程的语言里,聪明智慧的语言创造者们,从人类的继承关系里获得了启迪,将继承的概念进行了抽象,让它适用于更加广泛的领域。于是,这种广义的继承,就成为了我们面向对象编程的重要概念之一。

理解类的继承,首先,我们要理解在程序代码的世界里,也可以有“父子关系”。这是由面向对象编程的特性决定的。既然万物皆对象,包括程序代码块也是对象,那么,先创建的某个对象是否会是后来创建的某个对象的“父辈”呢?这是有可能的。计现代算机语言通常规定,只要后创建的类(一个被封装的代码块对象),从已创建的某个类(另一个已被封装的代码块对象)中直接继承了类的某些成员,那么,他们之间就是一种“父子关系”,先创建的叫父类,也叫基类。后创建的是子类,也叫派生类。

所以,关于类的继承的简洁描述是这样的:继承允许我们根据一个类来定义另一个类。当创建一个类时,程序员不一定要完全重新编写新的成员和成员函数,可以直接从已有的类中继承即可。

我们为什么需要继承呢?

在关于类的封装问题里,我们谈到过,程序员在追求编程效率和性能的过程中,除了尽可能的使用更加简洁的代码,更重要的是,尽可能的不要写重复的代码。那么,支持重复调用的封装成为了重要的手段之一。但不是所有的调用都是可重复的操作,有时我们会发现,计划调用的类似是而非,并不能完全满足需要。这时,我们是全部重写一个新类,还是创建一个能够部分继承自那个“不完全合适的类”的新类呢?显然,继承的效率更高。这也回答了,什么时候该使用继承的问题。

所以,继承使得创建和维护应用程序变得更容易,同时,也有利于重用代码和节省开发时间。

接下来,我们介绍一下,类的继承的使用方法。

类的继承示例:

代码语言:javascript
复制
// 首先,我们创建一个基类或父类,实现2个加数求和
public class MyClass
{
 public int x { get; set; }
 public int y { get; set; }
 public int Add()
    {
 int z = x + y;
 return z;
    }
}
代码语言:javascript
复制
// 然后创建派生类或子类,让它继承自MyClass
class MyClass1 : MyClass
{
 public int z { get; set; }
 //新增一个方法
 public int Add1()
    {
 return x+y+z;
    }
}

上面的子类或派生类MyClass1实现了3个加数求和的加法运算,但它并没有写太多的代码,甚至比它的父类MyClass的代码都少。编程更容易,写代码更轻松,这就是类的继承的好处!

//下面是对上述封装的加法类的应用

代码语言:javascript
复制
class MyProgram
{
 static void MyAdd()
    {
  //创建类的实例
 MyClass1 myClass= new MyClass1();
  //给实例字段赋值
        myClass.x = 3;
        myClass.y = 5;
        myClass.z = 2;
 //调用方法
 int my = myClass.Add1();
    //打印输出
        Console.WriteLine(my);
    }
}

继承的特性

  • 继承可以扩展已经存在的代码模块,提高编程效率,提高代码复用率。
  • 子类继承父类,意味着继承了其所有可访问的成员,并且,还可以自己扩展新成员。
  • 需要注意的是,C#类的继承只能单继承,一个父类可以有多个子类,但即一个子类只能继承自一个父类。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是类的继承?
    • ----
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档