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#,面向对象,继承
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
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
![](https://img.aspxhome.com/file/2023/8/93348_0s.jpg)
Java异常处理操作 Throwable、Exception、Error
2022-02-19 20:56:13
![](https://img.aspxhome.com/file/2023/9/82309_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/9/68579_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/7/63007_0s.png)
spring MVC中接口参数解析的过程详解
2023-11-28 09:17:50
![](https://img.aspxhome.com/file/2023/5/60525_0s.png)
WinForm实现为TextBox设置水印文字功能
2023-06-09 21:15:38
![](https://img.aspxhome.com/file/2023/3/85693_0s.png)
Java实现SMS短信通发送手机验证码案例讲解
2022-05-14 22:37:57
![](https://img.aspxhome.com/file/2023/0/129290_0s.jpg)
Android 隐藏底部虚拟键的两种方法
2021-07-18 23:24:51
浅谈Spring中单例Bean是线程安全的吗
2023-07-12 23:42:21
解决IDEA导入javaWeb项目注解爆红的问题
2021-08-07 13:42:02
![](https://img.aspxhome.com/file/2023/4/78894_0s.png)
ibatis学习之搭建Java项目
2021-11-02 00:35:29
C#获取局域网MAC地址的简单实例
2022-08-04 11:26:12
![](https://img.aspxhome.com/file/2023/3/111103_0s.png)