100421-向下转型

本文详细介绍了Java中多态性的概念,解释了为什么父类引用指向子类对象时只能调用父类的方法和属性。同时,强调了强制类型转换在调用子类特有属性和方法时的重要性。文章还提到了使用instanceof关键字来避免在向下转型时可能出现的ClassCastException,以及其应用场景和规则。通过实例展示了如何正确地利用这些机制来实现更灵活的代码设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.neal.day1004;

/**
 * 有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量
 * 声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法
 * 不能调用
 *
 * 如何才能调用子类特有的属性和方法?
 * 使用强制类型转换符,向下转型:使用强制类型转换符
 *      Man m1 = (Man)p2;
 *
 * 使用强转时,可能出先ClassException的异常
 *
 * instanceof关键字的使用
 *
 * a instanceof A: 判断对象a时否是类A的实例。如果是,返回true;如果不是,返回false
 *
 * 使用情景:为了避免在向下转型时出现ClassCaseException的异常,我们在向下转型之前,先
 * 进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型
 *
 * 如果a instanceof A返回true,则 a instanceof B也返回true。
 * 其中,类B时类A的父类。
 * 不相关的两个类是无法赋值的
 */
public class Person {
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值