您的位置:首页 > 编程语言 > C#

总结:C#语法——继承、虚拟、多态、实例化

2010-10-27 21:54 453 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
public class Parent
{
public void MethodParent()
{
Console.WriteLine("0.调用parent的MethodParent()方法");
}

public virtual void virtualMethodParent()
{
Console.WriteLine("1.调用parent的virtualMethodParent()方法");
}
}

public class Child : Parent
{
public void MethodChild()
{
Console.WriteLine("2.调用Child的MethodChild()方法");
}

public override void virtualMethodParent()
{
Console.WriteLine("3.调用Child的virtualMethodParent()方法");
}
}

class inherit_Polymorphism
{
static void Main()
{
Parent par1 = new Parent();
par1.MethodParent();
par1.virtualMethodParent();
//Child child9 = (Child)par1;   //编译不报错,运行出错
Console.WriteLine();

Child child1 = new Child();
child1.MethodChild();
child1.MethodParent();
child1.virtualMethodParent();
Console.WriteLine();

//等同于Parent par2 = (Parent)(new Child());
//par2实际为Parent类型,只能调用Parent类的方法MethodParent(),而不能调用Child类的方法MethodChild()
//可以通过 虚拟重载 调用Child类的方法virtualMethodParent()
Parent par2 = new Child();
par2.MethodParent();
par2.virtualMethodParent();
Console.WriteLine();

//同上
Parent par3 = (Parent)child1;
par3.MethodParent();    //除了虚拟重载的方法,只能访问父类的方法,不能访问子类方法
par3.virtualMethodParent();
Console.WriteLine();

//将Child强制转换为Parent后,可以将该Parent强制转换为Child。
//并只有实际上是Child的实例才能可以转换为Child,否则会产生运行错误,例:41行代码
Child child2 = (Child)par3;     //par3最初为Child
child2.MethodChild();   //对比上面的就能访问子类方法了
child2.MethodParent();
child2.virtualMethodParent();
Console.WriteLine();

Parent child3 = (Child)par3;
child3.MethodParent();
child3.virtualMethodParent();
Console.ReadLine();
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐