向上造型:什么是造型
造型就是把一个类型的对象赋给另外一个类型的变量,这个过程叫做造型
子类的变量不能去接收父类的对象
造型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 管的是什么,所以只有运行时候才知道,运行时候才知道的东西是动态的,所以动态绑定
搜索
复制