.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
关于C#中,继承类重写与隐藏基类方法的区别!

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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方法.
但二者声明与赋值都是同一个类时,不会发生这种问题.




相关文章

相关软件