【面向对象】C#继承的用法

继承
我们可能会在一些类中写一些重复的成员,我们可以将那些重复的成员单独封装在一个类中,作为这些类的父类。

public class Person//父类或基类
{
   public Person(sring name,int age,char gender)//父类有参的构造函数
   {
       this.Name=name;
       this.Age=age;
       this.Gender=gender;
   }
   //public Person() 此为父类无参的构造函数
   //{
   //}
}
public class Student:Person//子类或派生类
{
   public Student(string name,int age,char gender,int id):base(name,age,gender)//子类调用父类有参的构造函数
   {
       this.Name=name;
       this.Age=age;
       this.Gender=gender;
       this.Id=id;
   }
}

子类既可以继承父类的成员,也拥有自己的成员。
Q:子类继承了父类,那么子类从父类中继承过来什么?
A:子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
Q:问题:子类有没有继承父类的构造函数?
A:子类没有继承父类的构造函数,但是子类会默认地调用父类无参的构造函数,创建父类对象,让子类可以使用父类中的成员。
所以,如果在父类中重新写了一个有参数的构造函数后,那个无参的就被干掉了,子类就调用不到,所以子类就会报错。
解决办法:
1)在父类中重新写一个无参数的构造函数
2)在子类中显示的调用父类的构造函数,使用关键字**:base()**

继承的特性:
1、继承的单根性:一个子类只能有一个父类
2、继承的传递性

查看类图:右键 视图 查看类图(查看类之间的关系)

猜你喜欢

转载自blog.csdn.net/yangmu888858/article/details/88548465
今日推荐