惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
量子位
腾讯CDC
C
Check Point Blog
小众软件
小众软件
IT之家
IT之家
I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
博客园_首页
S
SegmentFault 最新的问题
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler

博客园 - 天寒

oracle 11gr2 2.04 em 更改 hostname 后无需重建资料库的方法 emca 更改监听端口 centos 安装vmware 9.02 报 Failed to load module "pk-gtk-module" "canberra-gtk-module" can not update ICEAuthority file mint或则ubuntu IIS使用ASP.NET State Service存储Session IIS 静态文件 如doc附件的安全控制 16个出色的开源软件 教程:创建简单的 ETL 包 SQL Server 2005 Beta 2 Transact-SQL 增强功能 深度看点 Linq查询与性能解析 EF v2 and Data Access Architecture Best Practices ASP.NET Dynamic Data Entity Framework Resources [转]PDC:Anders谈C# 4.0:新功能和展望 [转]从C# 2.0新特性到C# 3.5新特性 [转]探寻C# 3.5新特性 Eclipse反编译插件: Jodeclipse与JadClipse iis 6 tuning [转载]OllyDBG 入门系列(一)-认识OllyDBG
C# new and override
天寒 · 2009-07-06 · via 博客园 - 天寒

/// 测试点
/// (1) Override 与 new 的区别 (new后方法在父类与子类中各自存在,Override覆盖父类中函数)

/// (2) 子类 构造函数 的执行时间 (先执行父类构造函数,再执行子类构造函数)

public  class baseClass
    
{

        
public baseClass()
        
{
            MethodOfOverride();
            MethodOfNew();
 
        }


        
public virtual void MethodOfOverride()
        
{
            Console.WriteLine(
"baseClass:MethodOfOverride");
        }

        
public void MethodOfNew()
        
{
            Console.WriteLine(
"baseClass:MethodOfNew");
        }


        

    }


    
public class derivedClass : baseClass
    
{
        
public int value;
        
public derivedClass()
        
{
            value 
= 2;
        }


        
public override void MethodOfOverride()
        
{

            Console.WriteLine(
"derivedClass:MethodOfOverride value=" + value.ToString());
        }


        
public new void MethodOfNew()
        
{
            Console.WriteLine(
"derivedClass:MethodOfNew value=" + value.ToString());
        }


    }



    
/// <summary>
    
/// 测试点
    
/// (1) Override 与 new 的区别 (new后方法在父类与子类中各自存在,Override覆盖父类中函数)
    
/// (2) 子类 构造函数 的执行时间 (先执行父类构造函数,再执行子类构造函数)
    
/// </summary>

    class Program
    
{
        
static void Main(string[] args)
        
{
            Console.WriteLine(
"*********baseClass tempClassA = new baseClass()*********");
            Console.WriteLine(
"----------------初始化输出----------------------");
            baseClass tempClassA 
= new baseClass();
            Console.WriteLine(
"----------------下面方法输出------------------------");
            tempClassA.MethodOfOverride();
            tempClassA.MethodOfNew();

            Console.WriteLine(
"*********derivedClass tempClassB = new derivedClass()*********");
            Console.WriteLine(
"----------------下面初始化输出----------------------");
            derivedClass tempClassB 
= new derivedClass();
            Console.WriteLine(
"----------------下面方法输出------------------------");
            tempClassB.MethodOfOverride();
            tempClassB.MethodOfNew();

            Console.WriteLine(
"*********baseClass tempClassC = new derivedClass()*********");
            Console.WriteLine(
"----------------下面初始化输出----------------------");
            baseClass tempClassC 
= new derivedClass();
            Console.WriteLine(
"----------------下面方法输出------------------------");
            tempClassC.MethodOfOverride();
            tempClassC.MethodOfNew();

            Console.Read();

            
//
            /* 输出结果
             
             *********baseClass tempClassA = new baseClass()*********
             ----------------初始化输出----------------------
             baseClass:MethodOfOverride
             baseClass:MethodOfNew
             ----------------下面方法输出------------------------
             baseClass:MethodOfOverride
             baseClass:MethodOfNew
             
             
             *********derivedClass tempClassB = new derivedClass()*********
             ----------------初始化输出----------------------
             derivedClass:MethodOfOverride value=0
             baseClass:MethodOfNew
             ----------------下面方法输出------------------------
             derivedClass:MethodOfOverride value=2
             derivedClass:MethodOfNew value=2
             
             
             *********baseClass tempClassC = new derivedClass()********* 
             ----------------初始化输出----------------------
             derivedClass:MethodOfOverride value=0
             baseClass:MethodOfNew
             ----------------下面方法输出------------------------
             derivedClass:MethodOfOverride value=2
             baseClass:MethodOfNew
             
             
*/


        }

    }