您的位置:首页 > 编程语言 > C#

C#继承|继承中构造函数的调用

2014-06-15 00:05 211 查看
继承:在C#中所有的类都是继承自Object类的。子类从父类那里继承到的有:属性,方法,并没有继承父类私有的字段。

继承的两个特性:

1.单根性:即一个有且只能继承自一个父类。

2.传递性:即如果父类继承了爷爷类,孙子类继承了父类,那么孙子也继承了爷爷类的属性和方法。

继承中,构造函数调用的问题:

在子类继承父类的过程中个,继承的有父类的属性和方法,但是没有继承父类的构造函数。

当在存在继承关系的子类中创建一个子类的对象的时候,子类会首先自动调用父类的那个默认的无参数的构造函数;如果在父类中已经写了一个有参数的构造函数,那么父类的默认的无参数的构造函数就没有了,那么在子类的构造函数中就会编译报错,解决的办法有两种:

1.在父类中加入无参数的构造函数。

2.在子类中显示的调用父类的构造函数,使用关键字:base.

//定义的一个人类
public  class Person
{
string _name;

public string Name
{
get { return _name; }
set { _name = value; }
}
int _age;

public int Age
{
get { return _age; }
set { _age = value; }
}
char _gender;

public char Gender
{
get { return _gender; }
set { _gender = value; }
}

public Person()
{

}

/// <summary>
/// 父类有参数的构造函数
/// </summary>
/// <param name="name"></param>
/// <param name="age"></param>
/// <param name="gender"></param>
public Person(string name, int age, char gender)
{
this.Name = name;
this.Age = age;
this.Gender = gender;
}

}

public class Student : Person
{
int _id;

public int Id
{
get { return _id; }
set { _id = value; }
}

/// <summary>
/// 显示的调用父类的构造函数
/// </summary>
/// <param name="name"></param>
/// <param name="age"></param>
/// <param name="gender"></param>
/// <param name="id"></param>
public Student(string name, int age, char gender, int id)
: base(name, age, gender)   ///使用关键字base 显示的调用父类的构造函数,从而在子类实例化对象的时候,给父类中的字段进行赋值初始化。
{
this.Id = id;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息