微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

如何调用父类的构造函数

时间:2024-09-20 19:25:56   

大家好,今天Win10系统之家小编给大家分享「如何调用父类的构造函数」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

人体是如何运作的?系列软件最新版本下载

1.C#中子类构造函数中如何调用父类构造函数


  1. 子类的子类调用父类中的隐藏成员
一般情况,在调用父类成员时子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进行强制转换。
2. C#中base关键字-调用父类成员
c#学习入门 2010-03-29 20:24:38 阅读200 评论0 字号:大中小 订阅
C#中base关键字在继承中起到非常重要的作用。它与this关键字相比,this关键字代表当前实例。base关键字代表父类,使用base关键字可以调用父类的构造函数、属性和方法。
使用base关键字调用父类构造函数的语法如下:
子类构造函数:base(参数列表)
使用base关键字调用父类方法的语法如下:
base.父类方法();
using System ;
class Teacher//老师类
{
 public Teacher()//构造函数1
 {
 Console.WriteLine ("我是一位教师。");
 }
 public Teacher(string str)//构造函数2
 {
 Console.WriteLine ("老师,"+str);
 }
 public void OutPut()//自定义方法
 {
 Console.WriteLine ("输出方法");
 }
 private string name;
 public string Name//属性
 {
 get{return this.name;}
 set{this.name=value;}
 }
 public void getName()
 {
 Console.WriteLine ("我的名字是"+name);
 }
}
class Jack:Teacher
{
 static string hello="你好";
 public Jack():base(hello)//子类的构造函数继承的为父类第二个构造函数,注意写法
 {
 }
 public void myOutPut()//自定义函数
 {
 base.OutPut ();//引用父类的函数
 }
 public string myName//自定义属性
 {
 get{return base.Name ;}
 set{base.Name ="刘"+value;}
 }
}
class Test
{
 static void Main()
 {
 Jack j=new Jack ();//输出“老师,你好”
 j.myOutPut ();//输出"输出方法"
 j.myName ="德华";
 j.getName ();//输出“刘德华”
 }
}
3. 注意:base()调用父类构造函数时,不需要再次指定参数的类型,因为在子类中已经定义了这些参数,在base()中只需指定变量名即可,参数的类型必须和父类中的一致

2.子类如何调用父类的构造函数


  1、子类所有的 构造函数 默认调用父类的无参构造函数
  2、如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需(无需的意思是:可以写可以不写)在子类构造函数中显式调用super( );如果父类定义了有参构造函数,此时子类的构造函数中第一行必须显式调用父类定义的某个有参数构造函数。即,显式调用对应的参数个数、对应参数类型与此super( [arg0][,arg1]…. )的父类构造函数。
  3、如果子类的某个构造函数 想 调用父类的其他的带参数的构造函数,在构造函数的第一行人为添加 super(val1,val2[,val3…]),super()括号中的变量数量由想调用的父类的构造函数中的变量数量决定。如代码中的line 2,调用的是父类构造函数中两个参数的构造函数,那么Super(20,”Hello”)就两个变量。
  4、自行添加super(val1,val2,…),就可以指定调用父类的那个参数类型和数量一致的构造函数。之后在此子类构造函数中,系统不会再默认调用父类无参构造函数;
  5、如果子类的每个构造函数都自行添加super([val1,]….),除非人为调用父类无参构造函数,否则的话父类的无参构造函数可以不写。有super指定调用的父类构造函数存在即可
  6、super指代父类对象,可以在子类中使用 super.父类方法名(); 调用父类中的方法(无论是类方法还是实例方法都可以),此外调用实例方法还可以在方法内部实例化再调用

3.如何调用父类的构造方法


  调用父类的构造方法:
  当你new一个子类对象的时候,必须首先要new一个父类的对象出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以:
  第一个规则
  子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是这样就会调用父类没有参数的构造方法,如果父类中没有没有参数的构造方法就会出错。  
  第二个规则
  如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数。
  了解更多java编程知识,推荐来北京尚学堂,雄厚的师资力量与科学的授课方式,会带给你最完美的学习体验。

以上就是关于「如何调用父类的构造函数」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

Win10系统之家独★家使★用,转载请注明出处!

相关文章

  • 如何调用父类的构造函数

    如何调用父类的构造函数

    1.C#中子类构造函数中如何调用父类构造函数1.子类的子类调用父类中的隐藏成员一般情况,在调用父类成员时子2代和子1代没什么区别。但如果子1代隐藏父类成员,情况就会不同。像上面的情况,Son隐藏了父类的成员变量name和...
  • asp.net如何调用类

    asp.net如何调用类

    1.[转贴]Asp.net怎样调用类今天无意看到了这篇文章,尽管我已脱离这个阶段了!可还是忍不住地把它贴过来了!!!这个问题可能对于很多Asp.net的初学者来说都是一个大难题,我也不例外,今天研究了2小时,终于明白了,就让我...
  • 如何调用别人的dll

    如何调用别人的dll

    1.易语言如何调用别人的DLL通常只能调用自己写的dll,因为自己写这个DLL的时候就知道是怎么用的了。如果是别人写的,他必须声明要调用的函数,并将其公开。如果有必要,他还需要写一个打电话的例子。别人写的Dll大部分是C...
  • 如何使用淘宝禁用的关键词

    如何使用淘宝禁用的关键词

    1.淘宝宝贝标题禁用哪些关键词为了你的店铺避免被淘宝禁言,最好要看看哪些是淘宝标题禁用关键词,以免被降权处罚。关于标题禁用的关键字,统计了以下几点,跟大家一起学习(以下内容无法得到官方的证实,淘宝只会告诉你有...