转 关于C#中派生类调用基类构造函数的理解
关于C#中派生类调用基类构造函数的理解 .
c#class 本文中的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数
1、 当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数
Ex:
public class MyBaseClass
{
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
Console.WriteLine("我是子类无参构造函数");
}
public MyDerivedClass(int i)
{
Console.WriteLine("我是子类带一个参数的构造函数");
}
public MyDerivedClass(int i, int j)
{
Console.WriteLine("我是子类带二个参数的构造函数");
}
}
此时实例化派生类时,调用基类默认构造函数
2、 当基类中编写构造函数时,派生类没有指定调用构造哪个构造函数时,会寻找无参的构造函数,如果没有则报错,另外无论调用派生类中的哪个构造函数都是寻找无参的那个基类构造函数,而非参数匹配。
Ex:
public class MyBaseClass
{
public MyBaseClass(int i)
{
Console.WriteLine("我是基类带一个参数的构造函数");
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
Console.WriteLine("我是子类无参构造函数");
}
public MyDerivedClass(int i)
{
Console.WriteLine("我是子类带一个参数的构造函数");
}
public MyDerivedClass(int i, int j)
{
Console.WriteLine("我是子类带二个参数的构造函数");
}
}
此时实例化派生类时则报错
3、 基类中编写了构造函数,则派生类中可以指定调用基类的某个构造函数,使用base关键字。
Ex
public class MyBaseClass
{
public MyBaseClass(int i)
{
Console.WriteLine("我是基类带一个参数的构造函数");
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : base(i)
{
Console.WriteLine("我是子类无参构造函数");
}
public MyDerivedClass(int i) : base(i)
{
Console.WriteLine("我是子类带一个参数的构造函数");
}
public MyDerivedClass(int i, int j) : base(i)
{
Console.WriteLine("我是子类带二个参数的构造函数");
}
}
此时实例化派生类时使用的带一个参数的构造函数时,则不会报错,因为他指定了基类的构造函数。
4、 如果基类中的构造函数不含有无参构造函数,那么派生类中的构造函数必须全部指定调用的基类构造函数,否则出错
Ex
public class MyBaseClass
{
public MyBaseClass(int i)
{
Console.WriteLine("我是基类带一个参数的构造函数");
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
Console.WriteLine("我是子类无参构造函数");
}
public MyDerivedClass(int i) : base(i)
{
Console.WriteLine("我是子类带一个参数的构造函数");
}
public MyDerivedClass(int i, int j)
{
Console.WriteLine("我是子类带二个参数的构造函数");
}
此时编译将不能通过
转 关于C#中派生类调用基类构造函数的理解的更多相关文章
- C#中派生类调用基类构造函数用法分析
这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数例如: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- 关于C#中派生类调用基类构造函数的理解
(1)当基类中没有自己编写的构造函数时,派生类默认条用基类的构造函数 (2)当基类中有自己编写的构造函数时,要在基类中添加无参的构造函数 public class MyBaseClass { publ ...
- C#在派生类中调用基类成员
一.在派生类中调用基类成员 在C#的派生类中,我们可以使用base关键字调用基类中的公有或者受保护成员.这些成员只能是构造函数.实例方法或者实例属性. base关键字调用基类成员的语法格式如下: ba ...
- 关于MFC中重载函数是否调用基类相对应函数的问题
在重载CDialog的OnInitDialog()函数的时候,在首行会添加一句:CDialongEx::OnInitDialog();语句,这是为什么呢?什么时候添加,什么时候不添加? 实际上,我们在 ...
- C++中派生类使用基类成员的问题
在C++中,派生类在定义构造函数时,会调用基类构造函数首先完成基类部分的构造: class Derive : public Base { public: Derive(string nam, int ...
- c++中派生类对基类成员的三种访问规则(转)
C++中派生类对基类成员的访问形式主要有以下两种:1.内部访问:由派生类中新增成员对基类继承来的成员的访问.2.对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问.今天给大家介绍在3中 ...
- c++ 派生类向基类转换的可访问性
对于c++面向对象一直很疑惑,这次决定下功夫把它弄明白 一.派生类和基类之间的类型转换 首先理解,派生类含有基类的所有成分,只不过有些就算在派生类的成员函数也不能访问而已. (1)派生类和基类的自动转 ...
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
一.不能自动继承的成员函数 构造函数 析构函数 =运算符 二.继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数. 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类 ...
- c++——派生类和基类转换(类型兼容性原则)
基类也叫父类,派生类也叫子类. 类之间的继承关系继承关系是类之间的父子关系. 继承关系的特点如下:A. 子类拥有父类的所有属性和行为B. 子类也是一种特殊的父类C. 子类对象可以当父类对象使用D. 子 ...
随机推荐
- IoTimerInLineHook
#ifndef CXX_IOTIMERINLINEHOOK_H # include "IoTimerInlineHook.h" #endif ULONG32 SSDT_NtOpen ...
- hihocode ---1032
#include<iostream> #include<cstring> #include<cstdio> using namespace std; + ; ]; ...
- swift 开眼今日精选
swift 开眼今日精选 import UIKit class TodayController: UITableViewController { vararray =NSMutableArray() ...
- 二模 (5) day2
第一题: 有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感. 因此决定想使得任意相邻的两人的身高差距最大值最小. 如果答案不唯一,输出字典序最小的排列,指的是身高的排列.N<=50 解题过程 ...
- 其他窗体赋值给comboBox实现值的回显,并使赋的值处于选中状态(根据text获取selectedindex)
Form1 发货单位的这个下拉框comboBox1已经绑定数据库test表的name字段,里面有很多单位名称 比如有:甲公司.乙公司... 1.Form1的comboBox1首先绑定数据库的数据表te ...
- ASP.NET MVC学习之路由篇(3)
根据路由输出链接 既然是网站开发自然少不了链接,我们已经学会了强大的路由,但是还缺少一步就是能够将这些路由的路径输出到页面,下面我们就开始学习如何输出路由路径. 首先我们的路由注册部分如下所示: 1 ...
- C# Async/Await异步函数原理
原理 与同步函数相比,CLR在执行异步函数时有几个不同的特点: 1. 并非一次完成,而且分多次完成 2. 并非由同一个线程完成,而是线程池每次动态分配一个线程来处理: 结合 ...
- PowerShell工具脚本---按行数切割大文本文件
我编写的PowerShell工具脚本,[按行数切割大(文本)文件],生成n个小文件. 主要目的是为了能够让excel快速处理.或用脚本并发处理文本. 注意: 1 如果有必要,你可以先用其他工具,把大文 ...
- Xp 消息队列的使用
1.安装消息队列3.0: 控制面板/添加删除程序/添加window组件/找到消息队列/选择->详细信息->MSMQ HTTP支持. 注意:如果计算机没有连接到域需要去掉Active Dir ...
- App Store--心酸的上线路,说说那些不可思议的被拒理由
yoyeayoyea 您的应用包括色情内容(色情交易,色情展示). 原因是我们的销售人员,把几张艺术照放在个人相册里(头像),换成卡通头像,通过. 颜小风 被拒很正常 一次通过不正常. 之前上线 ...