使用this调用已有的有参构造函数_C#——继承:构造函数

上篇回顾

里氏替换概念

父类对象装子类对象

作用

方便进行对象存储和管理

使用

is和as

is用于判断

父类是不是指定类型的子类

as用于转换

父类类型转换为子类类型对象

当然父子可以相互转换

今天的标题是继承:构造函数,很多同学肯定有疑问,我们在封装时不是已经学习了构造函数吗?继承后的构造函数有什么不同吗?那首先,我们回顾一下在封装中学习的构造函数。

构造函数

实例化对象时调用的函数

主要用来初始化成员变量

不写返回值

函数名和类名相同

访问修饰符根据需求而定

一般为public

可以重载构造函数

可以用this语法重用代码

可以用this区分同名参数和成员变量

有参构造会顶掉默认的无参构造

如想保留无参构造需重载出来

那么在继承中

构造函数有什么区别呢?

继承中的构造函数

特点

当申明一个子类对象时

构造函数的执行顺序

先执行父类的

再执行子类的

父类的无参构造

很重要

子类可以通过

base关键字代表父类

调用父类构造

继承中构造函数执行顺序

父类构造

↓↓↓

父类构造

↓↓↓

.......

↓↓↓

子类构造

07a6a0c063d26a20e6ab40fa264824f2.png

faee489e6ba276679d79b7315e6698f1.png

无论如何,只要申明子类对象,就必须把自己的父类构造函数都走一遍,这个规则非常的重要!

父类的无参构造很重要

5e9b1848be592aea3651432f22e71b1c.png

29a61f8c0eeb2a76b356f8838208fc6a.png

注意,此处的子类有一个有参构造,当我们申明子类对象时,默认还是调用了父类的无参构造函数。

如果父类

没有了无参构造

cb6a1c6a1cdcac255ebbf059592d0655.png

注意,由于继承中,申明子对象时程序只会自动的调用父类的无参构造,所以如果父类没有了无参构造,是会报错的。因此父类的无参构造很重要。

d5f5f83a7f790698608097001fed15d4.png

在父类中加上无参构造,就不会报错了。为什么我这里的措辞是很重要,而不是必不可少呢?因为我们可以利用base重定向子类调用父类的哪一个构造函数

通过base调用父类构造

base是一个关键词,它主要用来表示父类,在继承中它的主要用处就是父类构造函数的调用,之后讲了多态它还有更多的用处。

3b6c572192a2488802d34ef6aa8a058c.png

上方代码中,父类是没有无参构造的,我们通过在子类中使用base关键字,含义是当调用子类有参构造时,会通过base调用父类的构造函数,具体调用的是哪一个由你传入的参数决定

0f1be81f63912a87e60c690f4d9cc076.png

这里的参数 i ,是通过子类构造传递给父类构造的,所以父类和子类打印出来的都是1。

base的使用规则,基本和封装中讲构造函数中的this很像,base代表父类,this代表自己,他们可以一起使用。

e19962efc5ffdce646bca25719fc03e9.png

8af98e63a81d0e67f7cd18347d925aba.png

总结

特点

当申明一个子类对象时

构造函数的执行顺序

先执行父类的

再执行子类的

父类构造

↓↓↓

父类构造

↓↓↓

.......

↓↓↓

子类构造

默认调用

父类无参构造

所以

父类无参构造

很重要

子类可以通过

base关键字代表父类

调用父类构造

basethis

用法相似

9d89b3e6d9ac68e70a60d3099e23f468.gif

关注

唐老湿

获取更多干货内容

294b6fb45dff9a42d6434eb890e39ad3.gif

c8c0fa5042a892b890d1aacf245e7e1a.png

end

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值