`通过之前的学习,应该理解其特性并会简单应用继承,现在开始学习继承中的构造方法,没有重新创建项目,还是使用之前例子的代码
使用Teacher类举例,先将父类People类的构造方法与Teacher类的构造方法写出来
图中红框中的是父类People类与子类Teacher类的构造方法
父类构造方法
子类的构造方法
现在按F6进行编译或者菜单栏中 生成->生成解决方案,就会出现如下错误信息
继承时构造方法的错误提示信息
出现这种错误信息的原因:是继承中构造方法是不能被继承的,所以如果运行输出时子类使用了父类中的成员时首先就会调用父类的无参构造方法,如果父类中没有此方法就会报错,解决方法有两个 1)在父类中写个无参的构造方法2)在子类中调用父类的构造方法
父类添加1个无参的构造方法
先学习在构造方法中使用的两个关键字 base与this,先看父类中使用this的代码
父类构造方法中使用this关键字
之前学习过构造方法的重载,这个就应用了方法的重载方式;首先看第一个构造方法,将People类中所有的属性都进行了赋值,第二个构造方法 参数后面冒号加this的意思是调用第一个构造方法,this的第一个参数name用于接收上方 string name中的name的值;第二与第三个参数因为没有传入值,所以使用默认值;this.name=name注释掉的原因是在调用第一个构造方法的时候已经通过this.Name=name赋值过了,此处不用再重新赋值了; 第三个构造方法与第二个的同理,不再赘述
注意: 1)构造方法的大括号不能省略 2)使用this的构造方法,最好是调用给属性赋值最全的构造方法
子类使用base关键字调用父类的构造方法
子类使用base的构造方法
在子类中使用base调用父类的构造方法,在调用时会发现共有4个(按我书写的有:无参,1个,2个,3个)构造方法,图中调用的是父类中最全的构造方法,子类的Salary属性只能自己赋值,其他注释掉的会通过父类的构造方法赋值,base中的参数会传递给父类构造方法参数对应的参数,可以通过调试进行查看