C# 继承的作用
C#中继承的作用C#继承时是不是就继承父类的属性另外子类不仅可以继承父类的属性自己也可以有自己的属性帮个忙谢谢...
C#中继承的作用 C#继承时 是不是就继承父类的属性 另外子类不仅可以继承父类的属性 自己也可以有自己的属性 帮个忙 谢谢
展开
5个回答
展开全部
1.如何实现继承
2.继承中的构造函数
3.重载、重写、隐藏在继承中是如何实现的继承具体的实现方法是:申明类的时候,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类(也就是父类)
。下面给具体的例子。
class A
{
int i; //这里没有访问修饰符,但会默认为
private
public A()
{
}
public void ShowA()
{
Console.WriteLine("我是父类A");
}
}
class B : A
{
public B()
{
}
public void ShowB()
{
Console.WriteLine("我是父类B");
}
}
class RUN
{
static void Main()
{
B b = new B();
b.ShowA();
b.ShowB(); //int temp = b.i; 这里会产生一个编译错误,因为i没有被继承,所以不能对其访问
}
}
上面的列子就展示了B类如何继承了A类,并且调用了A类的ShowA()的方法,以及没有被继承的成员。构造函数的作用是用来初始化对象的,他确保了每个数据成员在使用前都被赋值,防止调用了没有初始化的成员,而产生意想不到的结果。由于类的继承特性,所以在子类的对象在调用父类的数据成员的时候必须确保父类的数据成员被初始化,
下面我们就根据一个具体的例子看看C#是如何确保这一点的。我们把上面的例子稍微改一下class A
{
public A()
{
Console.WriteLine("我是父类A的构造函数");
}
}
class B : A
{
public B()
{
Console.WriteLine("我是父类B的构造函数");
}
}
class RUN
{
static void Main()
{
B b = new B();
}
}
运行后的结果是:我是父类A的构造函数
我是父类B的构造函数
由这个结果我们可以推出在实例化子类的时候要先调用父类的构造函数,然后在调用子类的构造函数,这样就确保不会发生没初始化就调用的情况发生。其实大家也可以用VS.NET
跟踪一下也可以知道其调用的顺序。同样是由于继承的原因,在子类还出现了重载、重写和隐藏这三种情况。
重载:
继承中的重载和类内的成员方法的重载是一样的,只要在子类中新建了和父类中同名的但参数列表不同的成员方法就重载了父类的成员方法,但前题是要能继承改成员方法。
重写:
是在子类中重新改写从父类中继承过来的某个方法,用新的方法代替原有的方法,这里要用关键字virtual override。
隐藏:
也是在子类中重新改写从父类中继承过来的某个方法,但不父类的方法替换掉,而是隐藏起来,要用关键字new。下面给出具体的代码说明如何实现的,具体的为什么要提供这三种机制会在后面的文章讨论。
class A
{
public void Fun1(int i) { }
public void Fun2() { }
public virtual void Fun3() { }
}
class B : A
{
public void Fun1(string i)
{
//对从A类继承过来的方法进行重构
}
public new void Fun2()
{
//
隐藏了从A类继承过来的方法,可以通过类型的转换从而调用被隐藏的方法
}
public override void Fun3()
{
//
重写了从A类继承过来的方法,无法在调用这个方法,对于要重写的方法在父类中必须用
virtual
}
}
有关继承的东西很多,这些都是基础的,只有把基础的记牢了,才能做更深入的应用.
2.继承中的构造函数
3.重载、重写、隐藏在继承中是如何实现的继承具体的实现方法是:申明类的时候,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类(也就是父类)
。下面给具体的例子。
class A
{
int i; //这里没有访问修饰符,但会默认为
private
public A()
{
}
public void ShowA()
{
Console.WriteLine("我是父类A");
}
}
class B : A
{
public B()
{
}
public void ShowB()
{
Console.WriteLine("我是父类B");
}
}
class RUN
{
static void Main()
{
B b = new B();
b.ShowA();
b.ShowB(); //int temp = b.i; 这里会产生一个编译错误,因为i没有被继承,所以不能对其访问
}
}
上面的列子就展示了B类如何继承了A类,并且调用了A类的ShowA()的方法,以及没有被继承的成员。构造函数的作用是用来初始化对象的,他确保了每个数据成员在使用前都被赋值,防止调用了没有初始化的成员,而产生意想不到的结果。由于类的继承特性,所以在子类的对象在调用父类的数据成员的时候必须确保父类的数据成员被初始化,
下面我们就根据一个具体的例子看看C#是如何确保这一点的。我们把上面的例子稍微改一下class A
{
public A()
{
Console.WriteLine("我是父类A的构造函数");
}
}
class B : A
{
public B()
{
Console.WriteLine("我是父类B的构造函数");
}
}
class RUN
{
static void Main()
{
B b = new B();
}
}
运行后的结果是:我是父类A的构造函数
我是父类B的构造函数
由这个结果我们可以推出在实例化子类的时候要先调用父类的构造函数,然后在调用子类的构造函数,这样就确保不会发生没初始化就调用的情况发生。其实大家也可以用VS.NET
跟踪一下也可以知道其调用的顺序。同样是由于继承的原因,在子类还出现了重载、重写和隐藏这三种情况。
重载:
继承中的重载和类内的成员方法的重载是一样的,只要在子类中新建了和父类中同名的但参数列表不同的成员方法就重载了父类的成员方法,但前题是要能继承改成员方法。
重写:
是在子类中重新改写从父类中继承过来的某个方法,用新的方法代替原有的方法,这里要用关键字virtual override。
隐藏:
也是在子类中重新改写从父类中继承过来的某个方法,但不父类的方法替换掉,而是隐藏起来,要用关键字new。下面给出具体的代码说明如何实现的,具体的为什么要提供这三种机制会在后面的文章讨论。
class A
{
public void Fun1(int i) { }
public void Fun2() { }
public virtual void Fun3() { }
}
class B : A
{
public void Fun1(string i)
{
//对从A类继承过来的方法进行重构
}
public new void Fun2()
{
//
隐藏了从A类继承过来的方法,可以通过类型的转换从而调用被隐藏的方法
}
public override void Fun3()
{
//
重写了从A类继承过来的方法,无法在调用这个方法,对于要重写的方法在父类中必须用
virtual
}
}
有关继承的东西很多,这些都是基础的,只有把基础的记牢了,才能做更深入的应用.
2013-08-31
展开全部
继承是方便优化代码,一个子类只能继承一个父类,同时子类可以有自己的属性和方法http://developer.51cto.com/art/200907/140586.htm这有帖子是说继承的可以看下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-31
展开全部
1.c#只允许单继承
2.c#的继承是可以传递的
3.派生类扩展它的直接基类,即派生类可以添加新的成员,但不能删除从基类继承的成员
4.构造函数和析构函数不能被继承
5.派生类可以隐藏基类的成员,如果在派生类中已声明与基类同名的新成员时,基类的该成员在派生类中就不能被访问到。
2.c#的继承是可以传递的
3.派生类扩展它的直接基类,即派生类可以添加新的成员,但不能删除从基类继承的成员
4.构造函数和析构函数不能被继承
5.派生类可以隐藏基类的成员,如果在派生类中已声明与基类同名的新成员时,基类的该成员在派生类中就不能被访问到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-31
展开全部
子类继承父类的属性跟方法。子类可以有自己的属性和方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-31
展开全部
你的理解是正确的.其实,我告诉你这样理解就好了.举个例子最好 现在我们有筷子这个物类,我们编程时,就是把现实中的事物转化成计算机可以识别的信息.也就是用C#编程时,我们就定义为一个筷子类.他有长度,高度,颜色属性,他有夹菜这个功能(方法).我们将这个类定义为Class_BasicKZ 现在做为筷子的制造商,每个厂商都有自己的商标,有自己的一些个性的设置,有的甚至给筷子加上了一些新功能.如A厂商:筷子某处加了一个隐藏的银针,可以用来测试饭菜是否有毒,那么他的筷子就得从普通筷子Class_BasicKZ那里继承普通筷子的属性,在此基础上,它有自己的属性和方法.如他有特制的银针,这是一个特有属性,他有验毒的功能(方法)可能有C厂商,B厂商等等.但是他们这些筷子都会有普通筷子Class_BasicKZ的属性和方法.希望对你有所帮助.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询