instance of 操作符
语法: X(变量名) instance of A(类名):
作用:检测x是否为类A的对象,返回值为boolean型。(不严谨)
1、要求X所属的类与类A必须是子类和父类的关系,否则编译报错。
2、如果X属于类A 的子类B,其返回值也为true。
向下转型
语法:子类类型 引用名 = (子类类型)父类引用;
要求:父类的引用必须指向的是当前目标类型的对象
属性没有重写之说,属性的值看编译类型。
1、如何才能调用子类特有的属性,方法:强制类型转换。 例:Person p=new Man();转为 Man m=(Man)p;
2、使用强转时,可能出现ClasslastException的异常。
3.为了避免出现异常,须先进行instanle of判断,如果返回true,则可以向下转换:如果为false,则不能。
4.常见问题:
①编译通过,运行不通过:Person p=new Woman(); Man m=(Man)p;
②编译、运行都通过: Person p=new son();Man m=(Man)p
③编译不通过: Man m=new Woman();
动态绑定机制:1、当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定。2、当调用对象属性时,没有动态绑定机制,哪里声明,那里使用。
向上转型
向上转型又称多态。
可以调用父类中的所有成员(需遵守访问权限)。
不能调用子类中特有成员;
最终运行效果看类的具体实现。