您的位置:程序门 -> .net技术 -> c#



请教一个有关类继承的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一个有关类继承的问题
发表于:2007-12-06 22:56:51 楼主
        class   program
        {
                public   class   sy01   {
                        int   a01;
                        int   a02;
                        public   sy01(int   a01_in,   int   a02_in)   {
                                this.a01   =   a01_in;
                                this.a02   =   a02_in;                      
                        }

                      //#01

                        public   void   print()   {
                                console.writeline("a01:"   +   a01   +   "   a02:"   +   a02);
                        }
                }
                public   class   sy02   :   sy01   {
                        int   b01;
                        int   b02;
                        public   sy02(int   b01_in,int   b02_in)   {
                                this.b01   =   b01_in;
                                this.b02   =   b02_in;
                        }
                        public   void   print_s()   {
                                console.writeline("b01:"   +   b01   +   "   b02:"   +   b02);
                        }
                }

                static   void   main()
                {

                        sy01   sy01_z   =   new   sy01(5,3);
                        sy01_z.print();

                        sy02   sy02_z   =   new   sy02(10,20);
                        sy02_z.print_s();

                }
        }

当我写完这组代码后,调试时系统总是会提示:

错误 1 “sy01”方法没有采用“0”个参数的重载


而当我在上面代码的“//#1”行用“   public   sy01()   {             }”来替换上时,就可以通过了,只是不知这是为什么?我看的书中的例程序中,并没有这么做啊。我用的开发环境是visual   studio   2005

发表于:2007-12-06 23:38:591楼 得分:0
默认构造函数应该是没有参数的吧
发表于:2007-12-07 09:30:512楼 得分:0
最好为每个类显式提供一个没参数的构造方法
发表于:2007-12-12 11:04:023楼 得分:0
谢谢2楼的zhbo2001,确实是这个原因。

如果我没有在基类中定义无参数构造方法(即为默认),那么在继承时,就一定要显性的指定构造方法

public   class   sy02   :   sy01   {  
      int   b01;  
      int   b02;  
      public   sy02(int   b01_in,int   b02_in):base(b01_in,b02_in)   {  
          this.b01   =   b01_in;  
          this.b02   =   b02_in;  
      }  
      public   void   print_s()   {  
        console.writeline("b01:"   +   b01   +   "       b02:"   +   b02);  
      }  
      }  

否则就肯定会报错。

ps:怎么给2楼的朋友加分呢?
发表于:2007-12-12 11:15:534楼 得分:0
是这么加吗?


快速检索

最新资讯
热门点击