C#中使用的关键字是base,但用法不完全相同。
1. 调用父类的构造方法
// 父类
public class Father
{
public Father(String name)
{
this.name = name;
}
private String name;
}
// 子类
public class Son:Father
{
public Son(String name)
: base(name)
{
}
}
注意:
如果没有第14行“:base(name)”,编译器将报告错误:“Father”不包含采用“0”参数的构造函数。因为默认隐式调用
父类不带参数的构造方法,而Father类没有不带参数的构造方法。所以此时需要像第14行那样显示调用父类构造方法。
2. 调用父类的成员
// 父类
public class Father
{
public String name = "小头爸爸";
public void TellName()
{
Console.WriteLine("My name is {0}.",name);
}
}
// 子类
public class Son:Father
{
public new String name = "大头儿子";
public new void TellName()
{
Console.Write("Father Told: ");
base.TellName();
Console.WriteLine("My Father's name is {0}",base.name);
Console.WriteLine("My name is {0}.", name);
}
}
如果不加第13行和第14行的关键字new,编译器将产生2个警告,但不影响程序的运行。因为子类隐藏了父类的成员。
如果第4行和第13行的name成员是private,会少产生一个警告。
3. 子类的子类调用父类中的隐藏成员
一般情况,在调用父类成员时子2代和子1代没什么区别。但如果子1代隐藏父类成员,情况就会不同。
像上面的情况,Son隐藏了父类的成员变量name和成员方法TellName(),如果再有一个类Grandson继承Son,那Grandson调用
Father类中被隐藏的成员时要像这样:
// 子类的子类
public class Grandson : Son
{
public new String name = "大头孙子";
public new void TellName()
{
Father f = this as Father;
Console.WriteLine("My Grandpa's name is {0}", f.name);
Console.WriteLine("My Father's name is {0}", base.name);
Console.WriteLine("My name is {0}.", name);
}
}
也可以使用强制转换,第8行不要,第9行的“f.name”换成“((Father)this).name”。但是不能使用base进行强制转换
分享到:
相关推荐
c#(f_0001)显示调用父类构造方法收集.pdf
主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下
在C#中调用存储过程两种方法
利用C#反射将子类舍弃多余的属性转换为父类,用途比较少。
C#中调用打印机编程实例教程
在C#中调用条码标签打印机中的动态链接库PPLAPPLB_Argox.txt
C#中调用存储过程的通用类, 共享出来来,自己的一点代码
C#中子类重写父类的方法
结构化查询语言sql中return的用法,在C#中调用带有return值的存储过程
父类赋值给子类的一个小方法,仅供学习参考...
C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 父类可以完成的任务,子类对象也可以完成 子类可以调用父类Person p= new student(); 声明父类变量,实例化子类...
C#调用存储过程的一个演示,附带数据库!我想对你有所帮助
KVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序。本文将比较详细的介绍这个工具的原理、使用入门(如何java应用转换为.NET应用、)自测可用
第十章 C#继承 派生类 派生类的构造方法.docx
C#模板框架+组态王opc交互代码+OPCAutomation.dll(Interop.OPCAutomation)使用教程
屏蔽父类成员C#程序,希望有点用吧。
调用截图工具/C#
在ASP.NET(c#)中调用带参数的存储过程最简便的方法(eg),个人强烈推荐使用