在VB.NET中处理构造函数时值得注意的两个陈述
2005-02-02 16:04
330 查看
在VB.NET中处理构造函数时,有两个陈述值得注意:
(1) 如果类型不包含任何实例构造函数声明,则VB.NET提供默认的构造函数;
默认参数调用直接基类的无参数构造函数。如果基类没有可访问的无参数构造函数,则发生编译期错误。
(2) 构造函数不能继承;
陈述(1)包含两个方面的信息:①是如果类型不包含任何实例构造函数声明,则VB.NET提供默认的构造函数,即下面的声明是允许的,在类Shape中我们没有显式声明任何构造函数,但是我们仍然可以通过VB.NET自动提供的无参数构造函数New()来实例化类;
②是如果类型中包含有实例构造函数的声明,那么VB.NET不再提供默认的构造函数,例如,我们在类Shape中添加了一个带参数的构造函数,
那么,如果直接实例化类时,则会产生错误;
Dim shape1 As Shape = New Shape
只能通过调用Shape类中显式声明的带参数的构造函数来实例化类,如下,
Dim shape1 As Shape = New Shape(New Point(0, 0))
因此,如果要在类中同时使用无参数和带参数的构造函数,必须同时显式地声明两种构造函数。
陈述(2),构造函数不能继承,即,如果要使子类与基类有相同的构造函数,那么必须在每个子类中都显式的声明与基类构造相同的构造函数,例如:
这一点非常重要而且也很有意义。因为我们往往倾向于认为子类继承了基类所有的属性和方法,这往往导致我们的程序出现编译错误。
综合以上两个陈述,在实际编程中应遵循一个原则:在类中,无论是基类还是子类,显式地声明所有需要的无参数或带参数构造函数。遵循这个原则,既有利于提高编译正确代码的速度,也有利于自己和其他程序员理解代码。
(1) 如果类型不包含任何实例构造函数声明,则VB.NET提供默认的构造函数;
默认参数调用直接基类的无参数构造函数。如果基类没有可访问的无参数构造函数,则发生编译期错误。
(2) 构造函数不能继承;
陈述(1)包含两个方面的信息:①是如果类型不包含任何实例构造函数声明,则VB.NET提供默认的构造函数,即下面的声明是允许的,在类Shape中我们没有显式声明任何构造函数,但是我们仍然可以通过VB.NET自动提供的无参数构造函数New()来实例化类;
②是如果类型中包含有实例构造函数的声明,那么VB.NET不再提供默认的构造函数,例如,我们在类Shape中添加了一个带参数的构造函数,
那么,如果直接实例化类时,则会产生错误;
Dim shape1 As Shape = New Shape
只能通过调用Shape类中显式声明的带参数的构造函数来实例化类,如下,
Dim shape1 As Shape = New Shape(New Point(0, 0))
因此,如果要在类中同时使用无参数和带参数的构造函数,必须同时显式地声明两种构造函数。
陈述(2),构造函数不能继承,即,如果要使子类与基类有相同的构造函数,那么必须在每个子类中都显式的声明与基类构造相同的构造函数,例如:
这一点非常重要而且也很有意义。因为我们往往倾向于认为子类继承了基类所有的属性和方法,这往往导致我们的程序出现编译错误。
综合以上两个陈述,在实际编程中应遵循一个原则:在类中,无论是基类还是子类,显式地声明所有需要的无参数或带参数构造函数。遵循这个原则,既有利于提高编译正确代码的速度,也有利于自己和其他程序员理解代码。
相关文章推荐
- (转)在VB.NET中处理构造函数时值得注意的两个陈述
- 在VB.NET中处理构造函数时值得注意的两个陈述
- 在ASP.NET中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方(asp.net页面的Page_Load执行两次)
- 在ASP.NET中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方
- 在ASP.NET程序中值得注意的两个地方
- vb.net 两个PNG文件叠加处理方式
- 在ASP.NET程序中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方
- [转载]在ASP.NET中值得注意的两个地方
- 在ASP.NET中值得注意的两个地方(asp.net页面的Page_Load执行两次)
- VB.NET System.IO.Path 文件名、路径、扩展名 处理
- ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)
- [VB.NET]ADO数据库处理-执行SQL代码
- [VB.NET]单元八 多媒体处理
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- vb.net 求得两个日期的时间差