标题:运行多态基础问题
取消只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:1 
运行多态基础问题
using System;

namespace ConApp4
{
    /// <summary>
    /// InheritedMethods 的摘要说明。
    /// </summary>
    class InheritedMethods
    {
        [STAThread]
        static void Main(string[] args)
        {
            DerivedClass dc = new DerivedClass();
            BaseClass bc = dc;
            bc.VirtualMethod();
            bc.NonVirtualMethod();
        }
    }

    class BaseClass
    {
        public virtual void VirtualMethod()
        {
            Console.WriteLine("VirtualMethod in BaseClass");
        }
        public void NonVirtualMethod()
        {
            Console.WriteLine("NonVirtualMethod in BaseClass");
        }
    }

    class DerivedClass : BaseClass
    {
        public override void VirtualMethod()
        {
            Console.WriteLine("VirtualMethod in DerivedClass");
        }
        public new void NonVirtualMethod()
        {
            Console.WriteLine("NonVirtualMethod in DerivedClass");
        }
    }
}
上面的代码运行后结果:
VirtualMethod in DerivedClass
NonVirtualMethod in BaseClass
这个是否能说明变量的 Virtual 方法由其实际类型中的方法决定
而非 Virtual 方法调用则由其声明类方法确定 ??
搜索更多相关主题的帖子: 声明类 实际类 运行时多态 
2008-08-07 10:37
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
回复 2# fjfhnui 的帖子
哦,这就是说以 是否被 override 进行判定的?
2008-08-14 11:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-227131-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.128215 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved