黑马程序员_继承之构造方法
2013-04-12 00:26
218 查看
------- 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();
}
}
继承是面向对象程序设计的主要特征之一,它可以让你重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。
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();
}
}
相关文章推荐
- 黑马程序员——JAVA继承中的构造方法
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- 黑马程序员--构造方法与继承
- 黑马程序员----构造方法及继承
- (七)黑马程序员——oc基础之继承与重写构造方法
- 黑马程序员——面向对象(上)— 类、对象、封装、继承、构造方法
- 黑马程序员---基础-概述、封装、构造方法、this和static关键字、继承
- 【转载】java继承中的构造方法(super)
- java 构造方法的继承
- 黑马程序员——OC学习小结------构造方法,分类,方法的重写,SEL
- 黑马程序员——OC核心语法点语法,成员变量,@property和@synthetic,构造方法
- 黑马程序员----java中构造方法全解
- 黑马程序员_object c学习日记②_@property和@synthesize、构造方法、分类及类对象
- 第十三章:方法 第十四章:构造与析构 第十五章:类继承(322)
- 子类继承父类(父类和子类里:块、静态块、构造和方法覆写)之间调用顺序
- 构造方法的继承
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- 继承中的构造方法
- java构造方法的继承
- 黑马程序员——OC语言构造方法