浅谈C#继承

发表于:2011-12-22 09:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佳园    来源:51Testing软件测试网采编

分享:

  那么我们该如何获得基类的构造函数和自身的构造函数呢?

  我们知道基类的初始化工作由基类的构造函数完成,派生类的初始化工作则有派生类的构造函数完成,

  但是这样就产生了派生类构造函数的执行顺序问题。

  当基类没有构造函数,派生类也没有构造函数时,派生类新曾成员的初始化工作由其他公有函数来完成。

public  class A
    {
        int test=0;
        public void sum()
        {
            test++;
            Console.WriteLine("I am test ={0}" ,test);
        }
    }
    class B : A
    {
        int i;
        public void PrintInt()
        {
            i = 3;
            Console.WriteLine("I am i ={0}", i);
        }
    }
    class InheritanceTest1
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.PrintInt();
            Console.Read();
        }
    }

  如果只有派生类定义构造函数时,只需构造派生类对象即可。对象的基类部分使用默认构造函数来自动创建。

  当基类和派生类都定义有构造函数时,那么执行顺序会怎样呢?

  如果基类中是没有参数的构造函数,那么他可以隐式的被派生类执行,也就是说,派生类根本不需要包含构造函数

  如果基类中是没有参数的构造函数,在派生类中可以自定义有参数的构造函数

public  class A
    {
        int test=0;
        public A()
        {
            test = 5;
            Console.WriteLine("I am A 公有默认构造函数 ,test={0}", test);
        }
    }
    class B : A
    {
    }
    class InheritanceTest1
    {
        static void Main(string[] args)
        {
            B b = new B();
            Console.Read();
        }
    }

32/3<123>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号