java16之前
if (obj instanceof ChildClass) {
ChildClass childObj = (ChildClass) obj;
// 执行子类特有操作
}
instanceof 判断obj 和childClass指的类是否有继承关系,instanceof通常和强制类型转换结合使用(子类向父类的转换);
如果不做判断就会出现编译错误,经过ingstanceof的运用就会变成boolean型
java16之后
if (obj instanceof ChildClass childObj) {
// 执行子类特有操作,无需再进行类型转换
}
getClass(通常用于特定的类型对象,而不是用于处理继承层次结构的类型判断)
if(pet.getClass()==Dog.class){
Dog dog=(Dog)pet;
dog.catchingFlyDisc();//dog的一个方法
getClass()返回的是运行时类的Class对象,所以用==而不equals()