| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1475 人关注过本帖
标题:请问c#中派生类重写基类方法与隐藏基类方法有什么区别
只看楼主 加入收藏
ruihua
Rank: 1
等 级:新手上路
威 望:1
帖 子:235
专家分:0
注 册:2006-2-21
收藏
 问题点数:0 回复次数:2 
请问c#中派生类重写基类方法与隐藏基类方法有什么区别
请问c#中派生类重写基类方法与隐藏基类方法有什么区别,什么时候需要隐藏,什么时候重写合适?.我刚开始学c#,有很多东西都搞的不是很清楚,书上说的写不是很明白.请c#的朋友们帮忙指点一下.谢谢!
搜索更多相关主题的帖子: 重写 基类 派生类 隐藏 
2006-03-20 16:55
梦幻情缘
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:769
专家分:20
注 册:2005-4-4
收藏
得分:0 
using System;
using System.Collections;

public class Nevermore60Customer:Customer
{
public override string GetFunnyString()
{
return "Nevermore60.Nevenmore!";
}



--------------------------------------------------------------------------------

public class Customer
{
public virtual string GetFunnyString()
{
return "Plain ordinary customer.Kaark!";
}
public class SamplesArray
{
public static void Main()
{
Customer Cust1=new Nevermore60Customer();
Nevermore60Customer Cust2;
// Cust1=new Customer();
Console.WriteLine("Customer referencing Customer."+Cust1.GetFunnyString());
Cust1=new Nevermore60Customer();
Console.WriteLine("Customer referencing Nevenmore60Customer:"+Cust1.GetFunnyString());
Cust2=new Nevermore60Customer();
Console.WriteLine("Nevenmore60Customer referencing"+Cust2.GetFunnyString());


}
}

Customer Cust1=new Nevermore60Customer();
如果是重写:则,如果声明的基类对象,指向的是派生类,那么这时调用的是派生类中对基本重写的方法的方法(如上所示)
如果是隐藏基类方法: public New string GetFunnyString()
{
return "Nevermore60.Nevenmore!";
}
则:Customer Cust1=new Nevermore60Customer();此时Cust1调用的仍是声明时候的基类中的GetFunnyString方法.
但二者声明与赋值都是同一个类时,不会发生这种问题.
2006-03-20 17:18
ruihua
Rank: 1
等 级:新手上路
威 望:1
帖 子:235
专家分:0
注 册:2006-2-21
收藏
得分:0 
明白了,那请问这样做到底有什么好处呢?

2006-03-20 17:44
快速回复:请问c#中派生类重写基类方法与隐藏基类方法有什么区别
数据加载中...
 
   



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

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