C#在派生类中调用基类成员
一、在派生类中调用基类成员
在C#的派生类中,我们可以使用base关键字调用基类中的公有或者受保护成员。这些成员只能是构造函数、实例方法或者实例属性。
base关键字调用基类成员的语法格式如下:
base . identifier或
base[expression-list]注意:
?base关键字不能用在派生类的静态方法中。
?必须显式添加基类的构造函数。
二、示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
public class A // 基类
{
protected string name; // 受保护字段成员,可在当前类和派生类中访问
protected int age; // 受保护字段成员
public A(string name, int age) // 实例构造函数
{
this.name = name;
this.age = age;
}
public void Show() // 公共方法
{
Console.WriteLine("基类-name:{0} age:{1}",name,age);
}
}
public class B : A // 这是派生类,以A作为基类
{
private int ID; // 派生类的成员
public B(int ID, string name, int age)
: base(name, age) // 调用直接基类的实例构造函数
{
this.ID = ID;
Console.WriteLine("派生类B的构造函数");
}
new public void Show() // 用new关键字隐藏基类中的同名方法
{
Console.WriteLine("ID:{0}", ID);
Console.WriteLine("派生类B的Show方法");
base.Show(); // 调用基类的方法
}
}
static void Main(string[] args)
{
// C#在派生类中调用基类成员-www.baike369.com
B b = new B(100,"BaiXue",18); // 创建类的实例
b.Show(); // 调用派生类B的方法
Console.ReadLine();
}
}
}
运行结果:
派生类B的构造函数
ID:100
派生类B的Show方法
基类-name:BaiXue age:18
C#在派生类中调用基类成员的更多相关文章
- C++ 继承 - 在派生类中对基类初始化
构造函数与基类的其他成员不同,不能被派生类继承,因此为了初始化基类中的成员变量,需要在派生类中调用基类的构造函数(即显式调用),如果派送类没有调用则默认调用基类的无参构造函数(即隐式调用). 显式调用 ...
- C#派生类中使用基类protected成员的方法
我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被prot ...
- cc31a_demo--CppPrimer_静态成员与继承-在派生类中访问基类中的static成员的方法
//*基类中的static成员,在整个继承层次中只有一个实例 //*在派生类中访问基类中的static成员的方法 //1.基类名::成员名 //2.子类名::成员名 //3.对象.成员名 //4.指针 ...
- C# 类中隐藏基类方法和Partial
今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继 ...
- Python中从B类中调用A类的方法。
好久没上了,Python还在学--最近进度有点慢... 下面代码记录了一个不太好理解的点,自己写了个小例子,总算是理顺了. B类想要调用A类,自己在网上看了一下其他人的回复:创建A类的实例,直接调用这 ...
- 正确理解Widget::Widget(QWidget *parent) :QWidget(parent)这句话(初始化列表中无法直接初始化基类的数据成员,所以你需要在列表中指定基类的构造函数)
最近有点忙,先发一篇我公众号的文章,以下是原文. /********原文********/ 最近很多学习Qt的小伙伴在我的微信公众号私信我,该如何理解下面段代码的第二行QWidget(parent) ...
- C#中派生类调用基类构造函数用法分析
这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数例如: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- 转 关于C#中派生类调用基类构造函数的理解
关于C#中派生类调用基类构造函数的理解 .c#class 本文中的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1. 当基类中没有自己编写构造函数时,派生类默认的调用 ...
- 关于C#中派生类调用基类构造函数的理解
(1)当基类中没有自己编写的构造函数时,派生类默认条用基类的构造函数 (2)当基类中有自己编写的构造函数时,要在基类中添加无参的构造函数 public class MyBaseClass { publ ...
随机推荐
- STL effectiv 条款7 复习 未完成
该条款很好的解决了 容器中存放指针释放的问题,for_each函数调用可以参考自己的前面的博客 为什么会有这个条款呢 很多时候 我们将new过的指针存放到容器中,我们有时候错误的认为 容器对象析构 ...
- PlayMaker Rotate旋转
每秒 绕 Y轴 旋转 180度 ,每帧都执行. 不勾选Every Frame的话就只会旋转一帧.
- 性能测试工具LoadRunner21-LR之Controller 常用函数
1.事务函数: Lr_start_transaction(); //标记事务的开始 Lr_end_transaction(); //标记事务的结束,一般情况下,事务开始与结束联合使用 Lr_get ...
- 虚拟机扩容(/dev/mapper/centos-root 空间不足)
1:.首先查看我们的根分区大小是多少 df -h 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs ...
- 百度BAE数据库连接问题
今天第一次使用百度的开发平台BAE,按照入门文档上的操作一步步来,进行的很顺利,可是我在上传了一个cms系统后,进行安装时,卡在了数据库连接这个地方,弄了一下午,终于有了结果,在这里记录起来,希望能帮 ...
- MySQL设置允许用户远程登录
. //登录数据库 mysql -u root -pvmwaremysql>use mysql; //%为所有ip都可以远程访问 mysql>update user set host = ...
- mysql-数据库模式定义语言(DDL)
库的管理 /* 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建: create 修改: alter 删除: drop */ #一.库的管理 #.库的创建 /* 语法: creat ...
- hibernate课程 初探一对多映射2-3 创建hibernateUtil工具类
本节主要内容:创建hibernateUtil工具类:demo demo: HibernateUtil.java package hibernate_001; import org.hibernate. ...
- [RabbitMQ]Windows环境下rabbitmqclt(Command Line Tools)出现Erlang distribution failed错误的解决方法
摘要 当使用rabbitmqctl时出现Erlang distribution failed,把%SystemRoot%Windows\System32\config\systemprofile下的. ...
- 移动端absolute元素居中
<div class="db"> <div class="dm"></div> </div> .db{ widt ...