随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

 

 

 

父子对象之间的转换分为了向上转型向下转型,它们区别如下:

  • 向上转型 : 通过子类对象(小范围)实例化父类对象(大范围),这种属于自动转换
  • 向下转型 : 通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换

模板:A a = new A();

首先确定a属于A类型,在new给A()分配内存时,需要先确认A()中的A属于一般类还是继承类,A()中的A属于一般类,那么会将A类中的变量和方法放入A()分配的本类内存中。

模板:A a = new B();

首先确定a属于A类型,在new给B()分配内存时,需要先确定B()中的B属于一般类还是继承类,B()中的B继承A,那么会将分配给B()的内存分为两块,一块是(super)父类空间,存放父类A的变量和方法,另一块是(this)本类空间,存放本类B的变量和方法

因为a属于A类型,所以能用A类(父类)中的变量和方法,无法使用B类(子类)中的变量和独有的方法,但是如果A类(父类)中的方法被B类(子类)重写了,那么a调用的方法将会是B类(子类)的方法,即a使用的是A类(父类)中的变量和A∩B=B(A与B共有,但是使用的是B)中的方法

成员方法:编译看左,左边有方法,运行看右,运行重写后的方法

  B是A的子类,凡是A与B相同的成员方法都会被B重写。编译时(或写代码时)调用的是A类(父类),运行时(或使用代码)真正调用的是B类(子类)

成员变量:编译看左,运行看左

  而对于成员变量来说,B类(子类)不会重写A类(父类)的成员变量,所以编译时(或写代码时)调用的是A类(父类),运行时(或使用代码)调用的也是A类(父类)

 

作者本人所有随笔仅为学习笔记,仅供参考

 

 

posted on   时间完全不够用啊  阅读(282)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示