1.多态变量:
1.1 子类和子类型:
类定义了类型;
子类定义了子类型;
子类的对象可以被当做父类的对象来使用;
赋值给父类的变量;
传递给需要父类对象的函数;
放进存放父类对象的容器里;


1.2 多态变量:(声明类型和动态类型,有时候一致有时候不一致)
Java的对象变量是多态的,它们能保存不止一种类型的对象;
它们可以保存的是声明类型的对象,或声明类型的子类的对象;
当把子类的对象赋给父类的变量的时候,就发生了向上造型;
1.3 向上造型:
造型cast:
子类的对象可以赋值给父类的变量;
注意:Java中不存在对象对对象的赋值!!父类的对象不能赋给子类的变量!
可以用造型:(同一个管理者共同管理不同的对象)
c = (Car) v;v是父类的变量,才为子类的对象。//只有当v这个变量实际管理的是Car才行。




1.4 造型:
用括号围起来类型放在值得前面;
对象本身并没有发生任何变化;
所以不是“类型转换”;
运行时有机制来检查这样的转化是否合理:
ClassCastException;


向上造型:
拿一个子类的对象,当做父类的对象来用;
向上造型是默认的,不需要运算符();
向上造型总是安全的;
2. 多态:
2.1 函数调用的绑定:
当通过对象变量调用函数的时候,调用哪个函数这件事情叫绑定;
静态绑定:根据变量的声明类型来决定;
动态绑定:根据变量的动态类型来决定;//运行时才知道,java中成员函数的调用默认为动态绑定;
在成员函数中调用其他成员函数也是通过this这个对象变量来调用的;
2.2 覆盖override:
子类和父类中存在名称和参数表完全相同的函数,这一对函数构成覆盖关系;
通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属的类的函数;
3. OBJECT类:所有的类都是继承自Object的。
3.1 Object类的函数:
toString();
equals();

网友评论