1 class Program
2 {
3 static void Main(string[] args)
4 {
5 b sb = new b();
6 sb.ChildSpeak();
7 b ss = new b("我是子类的参数");
8 Console.ReadKey();
9 }
10 }
11
12 class a
13 {
14 public string one { get; set; }
15
16 public a()
17 {
18 Console.WriteLine("我是第一个被调用的!");
19 }
20 public a(string param)
21 {
22 Console.WriteLine("我是父类的构造方法,我接收子类传过来的参数为-----" + param);
23 }
24
25 public void ParentSpeak()
26 {
27 Console.WriteLine("我是父类");
28 }
29
30 }
31 class b : a//当调用子类时,先会调用父类的无参构造方法
32 {
33 public b()//默认接上" :base()"
34 {
35 Console.WriteLine("我是第二个被调用的!");
36 }
37 public b(string message)
38 : base(message)//base:表示调用父类含参的构造方法
39 {
40 Console.WriteLine("我是子类的带参构造方法,我接收的参数为----" + message);
41 }
42
43 public void ChildSpeak()
44 {
45 var s = base.one;//可以通过base。出来父类的除私有的属性和方法
46
47 Console.WriteLine("我是子类!");
48 }
49 }
- 当实例化子类时(“b sb=new b();”),首先会先去调用父类的无参的构造方法,然后在调用子类的无参的构造方法;
- 当实例化子类时(“b ss=new b(“我是子类的参数”);”),首先会先去调用父类的有参的构造方法,然后在调用子类的有参的构造方法;