C#基础之 继承类相关构造函数使用

类构造函数 作用是为 类中成员变量进行赋值操作
单个类的时候 一般不会有什么思路问题,主要说明一下 有继承关系类的时候

当存在继承关系的类 如 A:B
首先要注意第一点:顺序
那么在构造函数时 顺序是由 B先构造 然后 A在构造
注意第二点方法使用
继承的一特点是为了复用,如果在使用方法却不想复用父类情况时 一般是进行重写操作,
重写之后,方法使用的准则 :实例化的哪个类 需要调用方法 就使用其所在类中方法 若不存在则向上兼容
接下里 用代码 net 8.0控制台 举个经典例子 以及分析

class Program
{
    static void Main()
    {
        try
        {
            var a1 = new A(1);
            var a2 = new A(1,2);
            var b1 = new B(1);
            var b2 = new B(1,2);
        }
        catch (Exception ex)
        {
            throw;
        }
    }

    public class A:B
    {
        public A(int a1) : base(a1)
        {
            x = a1;
        }
        public A(int a1,int a2) :base(a1, a2)
        {
            x = a2;
        }
        public int x;
        public override  void test()
        {
            Console.WriteLine("这是A"+x);
        }
    }
    public class B
    {
        public B(int c1)
        {
            y = c1;
            test();
        }
        public B(int c1,int c2)
        {
            y = c2;
            test();
        }
        public int y;
        public virtual void test()
        {
            Console.WriteLine("这是B"+y);
        }
    }

}

输出结果为
C#基础之 继承类相关构造函数使用_第1张图片
可能不知道的技术点
1.base 用法 目的为了区分使用 当父类多个构造函数时使用几个参数的构造函数
2.重写 1 需要父类设置方法为virtual虚方法 2 需要子类就行override 重写方法
这个技术点就是为了 满足可复用 同时也可自定义扩展
也就是规则相同能省则省,不相同就自己写

具体分析如下 以a2 和 b2实例化分析
a2.
先按照顺序思路
实例化a2 对象是 因为继承关系 会先去B类中构造,因为B多个构造函数 a2继承的是俩个参数的 所以会进入 带有c2参数的构造,但使用了test方法,此时判断A类中有此名的方法那么直接执行A中test方法
注意:因为构造函数顺序时B构造后再构造A
所以此时 方法是在执行A中方法 但是 构造A的步骤还没到达 所以 此时x为0 输出 A0

b2
先按照顺序思路实例化 直接去B类中构造 找到2个参数的对应构造 y=2,接下来执行test方法,发现B类中就有 执行B中test方法 输出B2

你可能感兴趣的:(c#,开发语言)