文章目录
继承
使用继承,可以把对象的相同属性和方法写到父类中,然后在子类中继承父类中的属性和方法,这样便于封装,也简写了代码。不同的属性和方法在各自的子类中单独声明。
可以通过查看类图,来查看程序中父类和子类,继承关系有箭头指向。
所有的类都继承了object类,当我们定义一个类的时候,如果没有定义继承关系,那么就默认为继承object类
#region 继承
Person p = new Person();
Teacher t = new Teacher();
t.Name = "老牛最邪恶";
t.Age = 50;
t.Gender = '女';
t.Sayhi();
//t.Show();
Console.ReadKey();
Student stu = new Student();
//使用继承,可以把学生和老师的相同点继承于人类,可以删除相同代码,
#endregion
//使用继承,可以把学生和老师的相同点继承于人类,删除相同的代码,便于封装
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 void Show()
{
Console.WriteLine("我是人,别害怕");
}
}
public class Teacher:Person //使用冒号继承,冒号后面的就是父类的名字
{
public void Sayhi()
{
Console.WriteLine("我是老师,别害怕,我叫{0},我今年{1}岁,我是{2}生",this.Name,this.Age,this.Gender);
}
}
public class Student:Person //学生类继承人类
{
public void Sayhello()
{
Console.WriteLine("我是学生,别害怕");
}
}
显示调用父类的构造函数
子类中如果有参数构造函数,默认的调用父类中的无参数构造函数,这时容易报错。
如果要调用父类的有参数构造函数,需要加关键字base。
public class Student:Person
{
//加上base,调用父类的构造函数
public Student(string name, int age, char gender, string id):base(name,gender,age)
{
this._id =id;
}
string _id;
public string Id
{
get {
return _id; }
set {
_id = value; }