首页 > 代码库 > 每日一测2(关于构造函数)
每日一测2(关于构造函数)
1、一个类中可以有多个构造函数,包括无参的默认构造函数和有参的。
2、不加修饰符或显式的用private修饰的构造函数, 表示该类不能被实例化。
3、子类的构造函数,默认会调用父类的无参构造函数,如父类的无参构造函数不存在,会报错。 也可以显式的指定调用父类的哪个构造函数
1 class Person 2 { 3 public int test; 4 static Person() 5 { 6 Console.WriteLine("我是父类的静态构造函数"); 7 } 8 public Person() 9 {10 test = 0;11 Console.WriteLine("我是父类的默认构造函数 " + test.ToString());12 }13 public Person(int t)14 {15 test = t;16 Console.WriteLine("我是父类的有参构造函数 " + test.ToString());17 }18 }19 20 class Chinese : Person21 {22 public Chinese() //默认会调用父类的默认构造函数,当父类没有默认构造函数则会报错(无法编译)23 {24 test++;25 Console.WriteLine("我是子类的默认构造函数..." + test.ToString());26 }27 28 public Chinese(int t)29 : base(t) //调用指定父类的构造函数30 {31 test++;32 Console.WriteLine("我是子类的有参构造函数..." + test.ToString());33 }34 35 static Chinese()36 {37 Console.WriteLine("我是子类的静态构造函数...");38 }39 }40 41 class Program42 {43 static void Main(string[] args)44 {45 int t = 5;46 Chinese cn = new Chinese(t); 47 Console.ReadKey();48 }49 }
执行结果:
其他例子自己跑个测试。
4、私有构造函数一般用于静态类,不能被外部实例化,却可以在内部实例化, 区别于继承
1 class Person 2 { 3 private Person(int t) //可有参可无参 4 { 5 Console.WriteLine("我是私有构造函数" + t.ToString()); 6 } 7 public static Person CreatePerson(int at) 8 { 9 Person P = new Person(at);10 return P;11 }12 13 }14 15 //class Chinese : Person //不能被继承的,会报错16 //{17 //}18 class Program19 {20 static void Main(string[] args)21 {22 int t = 5;23 Person temp = Person.CreatePerson(t); //不能被外部实例化,可以在类内部实例化. 24 Console.ReadKey();25 }26 }
每日一测2(关于构造函数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。