yishengi 发表于 2024-1-17 19:58

关于C#的里氏替换

大佬们,本人小白一枚,刚刚开始学习c#语言,跟着B站的老赵视频学的,学到关于里氏替换,卡住了,什么就父类不能访问子类的对象,但是实例化的时候可以new子类,然后就访问到了,实在没听懂,有大佬给讲解讲解吗?感激不尽

青青子衿骨 发表于 2024-1-17 22:32

一个类的对象,只能访问它本身的成员,子类本身的的属性它是不具备的,就好比人类和他的子类学生类,学生去上学这个属性,但人类没有这个属性。可以new子类,是因为,学生本身他也是人类,它是以人类的身份出现的,当他以人类身份出现时并不具备学生的属性,但是,如果里氏转换了,他就有学生的身份了,他现在就是个学生的身份,当然能访问作为学生类的属性

skyuce 发表于 2024-1-17 22:32

刚开始学不用去管这些东西, 基础用法先练熟来,甚至用最傻瓜式的方式去写,当你能用基础用法写一些小程序或一些小项目之后,再去学习复杂的方法,逐步替换。

whisky2011 发表于 2024-1-18 09:00

skyuce 发表于 2024-1-17 22:32
刚开始学不用去管这些东西, 基础用法先练熟来,甚至用最傻瓜式的方式去写,当你能用基础用法写一些小程序 ...

对的,先研究基本的语法,一步步来

Reo_52 发表于 2024-1-18 11:31

我也刚接触C#的小白,学的比你早了一点,个人认为类本身就是一个引用类型,实例化一个 父类 = new子类,本质上是让父类指向一个子类的引用(我猜和(子类)父类转换以及 父类 as 子类 这两个方式差不多)。父类new父类肯定只能用它自己里面的东西,当父类指向子类的时候肯定就能使用子类的对象了啊,你这里如果搞不清楚,后面学虚方法和重写(virtual/override)的时候估计会更糊涂。
里氏替换目前感觉后面学到了接口以及一些list的时候才能深刻体会这个东西的意义。

B站上面关于C#基础的教程很多,看老赵的不明白,就换着看看其他老师的,比如唐老狮的基础课程、另一个老赵 叫赵新政的、IT萌叔Jack等等多的是,人无完人,老师不可能每个细节都能让你听明白,唐老狮讲索引器那课直接给我听傻了{:1_890:},反正听不懂的课就换别的老师看看有没有讲相同内容的,或许就能明白了。

yishengi 发表于 2024-1-18 13:17

青青子衿骨 发表于 2024-1-17 22:32
一个类的对象,只能访问它本身的成员,子类本身的的属性它是不具备的,就好比人类和他的子类学生类,学生去 ...

谢谢大佬指点{:1_893:}

yishengi 发表于 2024-1-18 13:18

skyuce 发表于 2024-1-17 22:32
刚开始学不用去管这些东西, 基础用法先练熟来,甚至用最傻瓜式的方式去写,当你能用基础用法写一些小程序 ...

谢谢指点

yishengi 发表于 2024-1-18 14:39

Reo_52 发表于 2024-1-18 11:31
我也刚接触C#的小白,学的比你早了一点,个人认为类本身就是一个引用类型,实例化一个 父类 = new子类,本 ...

谢谢指点:handshake

ignativs 发表于 2024-1-19 14:58

里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。

瑞雪软件 发表于 2024-2-1 11:27

ignativs 发表于 2024-1-19 14:58
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。

这个应该是 开闭原则吧
页: [1]
查看完整版本: 关于C#的里氏替换