C#中面向对象编程机制之继承学习笔记

作者:junjie 时间:2023-12-12 03:46:43 

继承反应了类和类之间的关系。

世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结构清晰易读,而且易于代码的扩展和维护。

C#的继承只能继承自一个基类,这一点不同于C++的继承。

C#的继承具有传递性,即B继承自A,C继承自B,则C具有A的所有特性。

C#的继承隐式为public的。

假如不在派生类构造器中显示调用一个基类构造器,编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码, 如果基类没有默认的构造器,会造成编译错误。

举例:动物的共性:有嘴巴,有眼睛,有鼻子,可以移动,能够吃东西

所以定义基类   (包含动物的共性)


public class Animal {
      ......       
    }

再定义具体的动物的时候就可以继承自基类Animal,不用再重新定义这些基本的特征,只定义自己独有的特性就好。

例如:Dog


public class Dog:Animal
    {  
        //编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码
        public string Bark;//狗叫声
    }


public class Dog : Animal {
//在派生类构造器中显示调用一个基类构造器
        public Dog()
            : base() {
        }
        public string Bark;
    }


注意:

可以把一个派生类的值赋给基类,但不能把一个基类的值赋给派生类,因为基类不能转换为派生类,基类中只包含了派生类的一部分特性。

Animal animal=new Dog(); 正确的

Dog dog=new Animal();错误

标签:C#,面向对象,继承
0
投稿

猜你喜欢

  • C# 如何实现一个带通知的List<T>

    2022-08-05 03:40:26
  • 深入浅析c#静态多态性与动态多态性

    2022-10-16 09:41:17
  • Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    2021-07-19 04:41:18
  • javaweb实现在线支付功能

    2022-02-08 19:17:34
  • Java异常处理操作 Throwable、Exception、Error

    2022-02-19 20:56:13
  • Java连接redis及基本操作示例

    2023-12-07 03:27:03
  • C# ComboBox控件“设置 DataSource 属性后无法修改项集合”的完美解决方法

    2023-01-30 04:11:58
  • 解决java main函数中的args数组传值问题

    2021-06-24 12:46:13
  • SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解

    2021-11-27 06:37:22
  • Java中Elasticsearch 实现分页方式(三种方式)

    2022-03-04 06:19:08
  • java数据结构与算法之中缀表达式转为后缀表达式的方法

    2023-11-22 12:51:35
  • Java之SpringBoot自定义配置与整合Druid

    2022-09-28 06:23:06
  • spring MVC中接口参数解析的过程详解

    2023-11-28 09:17:50
  • WinForm实现为TextBox设置水印文字功能

    2023-06-09 21:15:38
  • Java实现SMS短信通发送手机验证码案例讲解

    2022-05-14 22:37:57
  • Android 隐藏底部虚拟键的两种方法

    2021-07-18 23:24:51
  • 浅谈Spring中单例Bean是线程安全的吗

    2023-07-12 23:42:21
  • 解决IDEA导入javaWeb项目注解爆红的问题

    2021-08-07 13:42:02
  • ibatis学习之搭建Java项目

    2021-11-02 00:35:29
  • C#获取局域网MAC地址的简单实例

    2022-08-04 11:26:12
  • asp之家 软件编程 m.aspxhome.com