黑马程序员_继承之构造方法

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

继承是面向对象程序设计的主要特征之一,它可以让你重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。

C#中,类只能支持单继承,但可以多继承接口。除了构造方法和析构方法,派生类隐式地继承了直接基类的所有成员。

基类的初始化工作由基类的构造方法完成,派生类的初始化工作则有派生类的构造方法完成,但是这样就产生了派生类构造方法的执行顺序问题。

1.如果基类和派生类都没有定义构造方法,即使用默认的构造方法,又或者如果只有派生类定义构造方法时,只需构造派生类对象即可。对象的基类部分使用默认构造方法来自动创建。

如:

public class A

    {

        int i=0;

        public A()

        {

            i= 5;

            Console.WriteLine("我是 A 无参的构造函数 ,i = ",  + i);

        }

    }

    class B : A 

    {

    }

    class 继承 

    {

        static void Main(string[] args)

        {

            B b = new B();//只需要构造派生类的对象,基类会自动创建

            Console.ReadKey();

        }

}

结果:I am A 公有默认构造函数 ,test=5

2.如果基类定义了带有参数的构造方法,那么此构造方法必须被执行,且在派生类中实现该构造方法,此时我们可以使用base关键字

如:

class A

    {

        public int i;

        public A(int i)

        {

            this.i = i;

            Console.WriteLine("我是A的带参构造函数,i = " + this.i);

        }

    }

    class B : A

    {

        public int i;

        public B( string str, int j ) : base( j)

//执行基类的构造方法,注意:传送给基类的参数名必须和派生类的构造方法里定义的参数名相同,如此处的j,在派生类实例化对象时,传送给j的值也会传送给基类的构造方法。

        {

            Console.WriteLine("我是" + str + i);

        }     

    }

    class Program

    {

        static void Main(string[] args)

        {

    //实例化派生类,10也会传送给基类的构造函数

            B b = new B("哇哈哈", 10);

            Console.ReadKey();

        }

    }


你可能感兴趣的:(继承,.net,C#,黑马程序员)