大哥们帮忙解释一下这段C#代码

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:59:18
using System;
public class Parent
{string parentString;
public Parent(){
Console.WriteLine("Parent Constructor.");}
public Parent(string myString){
parentString=myString;
Console.WriteLine(parentString);}
public void print(){
Console.WriteLine("I'm a Parent Class.");}}
public class Child:Parent
{
public Child():base("From Derived")
{Console.WriteLine("Child Constructor.");}
public void print()
{base.print();
Console.WriteLine("I'm a Child Class.");}
public static void Main()
{Child child=new Child();
child.print();
((Parent)child).print();}}
输出结果是:From Derived
Child Constructor.
I'm a Parent Class.
I'm a Child Class.
I'm a Parent Class.
各位朋友,我比较不理解的是从输出结果中的第三行开始.为什么会这样输出,请各位帮个忙!
最好是谁给俺个QQ号,可以对话方式讨论,因为我有很多问题.比如:程序是从主函数开始运行的吗?Child child=new Ch

Child child=new Child();
当new的时候,就会调用构造函数。
而子类的构造函数是这样的
public Child(): base("From Derived")
{
Console.WriteLine("Child Constructor.");
}
先执行父类的其中一个带参数的构造函数输出了:
From Derived
然后继续执行子类的构造函数中的语句,输出了:
Child Constructor.
然后child.print();调用子类中的方法,print()
和上面讲的类似:
先执行父类的print(),也就是base.print();
这里base就代表父类。输出:
I'm a Parent Class.
紧接着执行子类的输出语句,输出:
I'm a Child Class.
最后一句:((Parent)child).print();
将子类的实例child强制转换为父类的一个临时对象,并执行父类中的print方法就输出了最后一句:
I'm a Parent Class.
================================

第二个问题:应该写成这样
A[3]={new a1(),new a2(),new a3()};
要指定长度,这种写法是可以的