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

本文详细解析了C#中继承的基本概念及构造函数调用的问题,包括单根性、传递性等特性,以及如何解决继承过程中构造函数缺失的问题。

继承:在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;
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqrCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值