1、1.如何实现继承2.继承中的构造函数3.重载、重写、隐藏在继承中是如何实现的一提到继承我想大家听到最多的估计是-财产继承这个词,财产继承指的是子辈从父辈得到原本属于父辈的财产的所有权和使用权。这里的类所说的继承和这个意思也差不多,当子类继承某个父类的时候拥有了父类的成员,能随时使用父类的成员,但有相关的限制,只有修饰符为 public protected 这样的成员才会被继承。具体的实现方法是:申明类的时候,在类名称后放置一个冒号,然后在冒号后指定要从中继承的类(也就是父类) 。下面给具体的例子。class Aint i; /这里没有访问修饰符,但会默认为 privatepublic A()p
2、ublic void ShowA()Console.WriteLine(“我是父类 A“);class B : Apublic B()public void ShowB()Console.WriteLine(“我是父类 B“);class RUNstatic void Main()B b = new B();b.ShowA();b.ShowB();/int temp = b.i; 这里会产生一个编译错误,因为 i 没有被继承,所以不能对其访问上面的列子就展示了 B 类如何继承了 A 类,并且调用了 A 类的 ShowA()的方法,以及没有被继承的成员。构造函数的作用是用来初始化对象的,他确保了
3、每个数据成员在使用前都被赋值,防止调用了没有初始化的成员,而产生意想不到的结果。由于类的继承特性,所以在子类的对象在调用父类的数据成员的时候必须确保父类的数据成员被初始化,下面我们就根据一个具体的例子看看 C#是如何确保这一点的。我们把上面的例子稍微改一下class Apublic A()Console.WriteLine(“我是父类 A 的构造函数“);class B : Apublic B()Console.WriteLine(“我是父类 B 的构造函数“);class RUNstatic void Main()B b = new B();运行后的结果是:我是父类 A 的构造函数我是父类
4、B 的构造函数由这个结果我们可以推出在实例化子类的时候要先调用父类的构造函数,然后在调用子类的构造函数,这样就确保不会发生没初始化就调用的情况发生。其实大家也可以用VS.NET 跟踪一下也可以知道其调用的顺序。同样是由于继承的原因,在子类还出现了重载、重写和隐藏这三种情况。重载:继承中的重载和类内的成员方法的重载是一样的,只要在子类中新建了和父类中同名的但参数列表不同的成员方法就重载了父类的成员方法,但前题是要能继承改成员方法。重写:是在子类中重新改写从父类中继承过来的某个方法,用新的方法代替原有的方法,这里要用关键字 virtual override。隐藏:也是在子类中重新改写从父类中继承过
5、来的某个方法,但不父类的方法替换掉,而是隐藏起来,要用关键字 new。下面给出具体的代码说明如何实现的,具体的为什么要提供这三种机制会在后面的文章讨论。class Apublic void Fun1(int i) public void Fun2() public virtual void Fun3() class B : Apublic void Fun1(string i)/对从 A 类继承过来的方法进行重构public new void Fun2()/隐藏了从 A 类继承过来的方法,可以通过类型的转换从而调用被隐藏的方法public override void Fun3()/重写了从 A 类继承过来的方法,无法在调用这个方法,对于要重写的方法在父类中必须使用 virtual有关继承的东西很多,这些都是基础的,只有把基础的记牢了,才能做更深入的应用本文来源于 A C# 学习与研究 http:/ , 原文地址:http:/