CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

将构造函数定义为private与其子类的构造函数有什么关系

楼主xinfx(新发现)2005-10-06 20:18:48 在 .NET技术 / C# 提问

我定义下面的类  
  public   class   Third  
  {  
  private   Third()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
  }  
  然后定义其子类  
  public   class   Fourthly:Third  
  {  
  private   Fourthly()  
  {  
   
  }  
  }  
  我发现一旦把Third类的构造函数定义为private类型,那么其子类Fourthly的构造函数也会出错,提示  
  C:\Inetpub\wwwroot\WebApplication1\Fourthly.cs(10):   不可访问“WebApplication1.Third.Third()”,因为它受保护级别限制  
   
  这个是怎么回事,我没有用到base啊?  
  问题点数:20、回复次数:8Top

1 楼xinfx(新发现)回复于 2005-10-06 20:35:28 得分 0

楼上的兄弟你也太.....  
  Top

2 楼xinfx(新发现)回复于 2005-10-06 20:45:20 得分 0

好像在实例化子类的时候,与其父类也有关系Top

3 楼xinfx(新发现)回复于 2005-10-06 21:24:02 得分 0

比如:  
  public   class   Third  
  {  
  public   string   BaseTestStr;  
  private   Third()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
  BaseTestStr   =   "用法的测试BBBB";  
  }  
  public   class   Fourthly:Third  
  {  
  private   Fourthly()  
  {  
   
  }  
  }  
  我下面实例化类Fourthly  
  Fourthly   FClass2 =   new   Fourthly();  
  string   TestValue =   FClass2.BaseTestStr;  
  那么它照样可以访问到BaseTestStr,且其值输出为:用法的测试BBBB  
  Top

4 楼wuyi8808(空间/IV)回复于 2005-10-06 21:30:06 得分 18

public   class   Third  
  {  
  //static   Third(){}  
  }  
   
  public   class   Fourthly:Third  
  {  
      private   Fourthly():base(){}  
  }  
   
   
  除   System.Object   外的任何类,   如果没有显示地指明继承自什么类,   则隐式地继承自   System.Object,   如:  
   
  class   SomeClass   {}  
   
  相当于  
   
  class   SomeClass   :   System.Object   {}  
   
  同样,  
   
  public   class   Fourthly   :   Third  
  {  
      private   Fourthly()   {}  
  }  
   
  相当于:  
   
  public   class   Fourthly   :   Third  
  {  
      private   Fourthly()   :   base()   {}  
  }  
  Top

5 楼diandian82(点点(nothing))回复于 2005-10-06 21:30:26 得分 2

你要孩子要先有老爸!Top

6 楼wuyi8808(空间/IV)回复于 2005-10-06 21:40:31 得分 0

public   class   Third  
  {  
      protected   Third()           //   <---   如果是   private   就出错  
      {  
          System.Console.WriteLine("调用了Third的构造函数");  
      }  
  }  
   
  public   class   Fourthly   :   Third  
  {  
      private   Fourthly()   {}   //   <---   不管有没有这一行都一样的  
   
      static   void   Main()  
      {  
          new   Fourthly();  
      }  
  }  
   
  /*   程序输出:  
  调用了Third的构造函数  
  证明Fourthly()调用了base()  
  */  
  Top

7 楼xinfx(新发现)回复于 2005-10-06 21:57:20 得分 0

我上面的代码有错误  
  public   class   Third  
  {  
  public   string   BaseTestStr;  
  private   Third()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
                                      BaseTestStr   =   "用法的测试BBBB";  
   
  }  
  }  
  public   class   Fourthly:Third  
  {  
  private   Fourthly()  
  {  
   
  }  
  }  
  Top

8 楼xinfx(新发现)回复于 2005-10-06 21:58:34 得分 0

多谢wuyi8808(空间/IV)的指点,关键是  
  除   System.Object   外的任何类,   如果没有显示地指明继承自什么类,   则隐式地继承自   System.Object,   如:  
   
  class   SomeClass   {}  
   
  相当于  
   
  class   SomeClass   :   System.Object   {}  
   
  同样,  
   
  public   class   Fourthly   :   Third  
  {  
      private   Fourthly()   {}  
  }  
   
  相当于:  
   
  public   class   Fourthly   :   Third  
  {  
      private   Fourthly()   :   base()   {}  
  }Top

相关问题

  • 淡淡话题007:一个简单的问题:父类和子类都定义了构造函数,用子类定义一个实例时,能阻止父类构造函数的执行吗?
  • 子类如何继承父类的构造函数?
  • 孩子类和祖先类的构造函数怎么运行?
  • 如何在父类中约定子类的构造函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • 构造函数
  • 构造函数
  • 构造函数??
  • 构造函数
  • 函数构造

关键词

  • 函数
  • fourthly
  • 子类
  • 构造函数
  • baseteststr
  • third
  • 定义
  • private
  • public class
  • object

得分解答快速导航

  • 帖主:xinfx
  • wuyi8808
  • diandian82

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo