| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 383 人关注过本帖
标题:运行多态基础问题
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:2 
运行多态基础问题
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
fjfhnui
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-6-18
收藏
得分:0 
这就运行时多态 如果你如果你没有重写那个方法将调用父类的方法
2008-08-11 00:29
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 2# fjfhnui 的帖子
哦,这就是说以 是否被 override 进行判定的?
2008-08-14 11:15
快速回复:运行多态基础问题
数据加载中...
 
   



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

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