您的位置:首页 > 编程语言 > C#

c#学习笔记二 构造函数

2008-03-26 08:03 337 查看
a. 如果一个类没有显式的提供构造函数,编译器会提供一个无参数的构造函数,格式是:
public <类名>:base(){}
我们把这个由编译器提供的构造函数,成为默认构造函数。
b. 如果提供了显式的构造函数,那么编译器就不会提供默认构造函数
c. 基类的构造函数必须且总是最先调用,如果子类定义了自己的构造函数而没有声明父类构造函数调用的方式,
编译器会调用无参数构造函数。
d.子类的构造函数访问修饰符可以与父类不同(而virtual函数在override时访问修饰符必须一致)。

根据以上三点可以推断:
(1) 构造函数是不会继承的。
假设:父类提供了有参数的构造函数,子类不提供构造函数。
根据 a 编译器提供默认的构造函数,并且调用父类的无参数构造函数。
根据 b 父类没有无参数构造函数
编译不能通过。
解决:方法一 子类提供构造函数,并且首先调用父类的有参数构造函数。
方法二 父类提供无参数构造函数
(2) 如果一个类提供的所有构造函数(无论有无参数)完全是private的,那么这个类是不能继承的。
因为private限定的函数除在类内部可以使用外,在别的任何地方是不能使用的。根据 c 不难知道编译是不能通过的。
(3) 只要满足c 同一个类自己的构造函数之间可以互相调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: