向上造型和多态
向上造型:什么是造型
造型就是把一个类型的对象赋给另外一个类型的变量,这个过程叫做造型
子类的变量不能去接收父类的对象
造型cast:
1.子类的对象可以赋值给父类的变量
2.注意!java中不存在对象对对象的赋值!!
3.父类的对象不能赋值给子类的变量!
Vechicle v;
Car c = new Car();
v = c; //可以
c = v;
4.可以用造型:
c = (Car)v;(只有当v这个变量实际管理的是Car才行)
类型转换和造型区别:
将 10.2 类型转换过后,10.2 就变成了 10,不再是 10.2 了;
而造型是将它当作另外一个类型来看待,但并不会改造成为另外一个类型
什么是向上造型:
1.拿一个子类的对象,当作父类的对象来用
2.向上造型是默认的,不需要运算符
3.向上造型总是安全的
向下造型:
多态:什么是多态变量
1.它有两个类型,一个是它的声明类型,一个是它的动态类型,它的声明类型永远是 Item,而它的动态类型是这次拿到是什么就是什么,可能是 CD 可能是 DVD
2.当通过点运算符说 item 所管理的对象去做 print()的动作的时候,它会让它所实际管理对象的那个类型去做 print()的动作,这样子的一件事情叫做多态
多态的技术基础:绑定
1.当通过对象变量调用函数的时候,调用哪个函数这件事情叫做绑定
2.静态绑定:根据变量的声明类型来定义
3.动态绑定:在根据变量的动态类型来决定
4.在成员函数中调用其他成员函数也是通过this这个对象变量来调用的
对于 Java 来说,所有的绑定都是动态绑定
最后一点也是动态绑定,所有的成员函数的调用都应该是看作一种动态绑定
对于编译器来说,item.print()这一行,在编译的时候,它并不知道这一行到底这个时候 item 管的是什么,所以只有运行时候才知道,运行时候才知道的东西是动态的,所以动态绑定
覆盖:覆盖override
1.子类和父类中存在名称和参数表示完全相同的函数,这一次函数构成妇变
2.通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属
的类的函数
对于 Java 来说,所有的绑定都是动态绑定
最后一点也是动态绑定,所有的成员函数的调用都应该是看作一种动态绑定
对于编译器来说,item.print()这一行,在编译的时候,它并不知道这一行到底这个时候 item 管的是什么,所以只有运行时候才知道,运行时候才知道的东西是动态的,所以动态绑定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix