构造函数的调用
构造函数的调用
1.怎么调用父类的构造函数?
在方法后边+:base(),括号是父类的构造函数的参数
调用子类的构造函数,会先调用父类的构造函数,
DrivedClass dc = new DrivedClass():base()
base()调用父类
1、如何在子类中调用父类的默认构造函数(无参)
在子类构造函数后面加上:base();//指定调用父类的无参构造函数。
public 子类名():base()
{
}
base()//指定调用无参的构造函数。此时会先调用父类的无参构造函数,然后在调用子类构造函数。
//不加base()的情况下也是默认调用无参的构造函数,如果父类中没有无参的构造函数的情况下会报错。
2、调用有参数的构造函数
设父类构造函数参数为(int i,string z)
public 子类名(int I,string Z):base(I,Z)
{
}
因已在子类构造函数内指定了父类构造函数的参数类型为int和string,又将子类构造函数内的参数放在base()内,那么此时父类内指定对应的构造函数会被base()括号内的参数赋值。
1.无参情况
public DriveClass():base(){...}//会先调用父类构造函数,不写base也会默认调用
2
public DriveClass
(int attack,int hp,int speed):base(hp,speed){}
//hp,speed是父类里的变量,attack是DriveClass独有的
DriveClass t=new DriveClass(100,80,10);//即给自身变量初始化了也给父类初始化了
子类的构造函数
构造函数:方法和类名相同,在创建对象时会调用构造函数
在子类调用父类的构造函数
public DrivedClass():Base//这里的Base是父类的意思,比赛父类名,写不写base结果都一样
顺序:先构造父类,在构造子类
Drivedclass bc1 = new Drivedclass();//必须用子类来创建一个对象,用父类创建的只会完成父类的构造函数
在子类函数调用父类的构造函数
public DrivedClass (int attack,int hp,int speed):base()
当指定调用父类某个有参数的函数时,就不会去调用无参数的函数了
子类构造器调用父类构造器的语法:
子类构造器() : 父类构造器(父类中需要的参数) {}
public DrivedClass(int attack,int hp,int speed):base(hp,speed){
this.attack = attack;
}
这可以调用父类的值,
在子类的构造函数里加冒号:base(hp,speed) 调用父类的构造方法
子类给父类构造:
:base()
构造函数:先调用父亲在调用孩子
publec DrivedClass( int hp ,int speed): base (hp,speed)
publec 函数名( 值): base (值)
这个是简写:调用父类里面的值类型赋值过来。