Java面向对象三大特征之多态的基础语法

本文介绍了Java中的向上转型和向下转型,强调了向下转型可能引发的ClassCastException及其避免方法。多态作为面向对象的三大特性之一,使得代码更具灵活性。文章详细解释了多态的两种形式——形式参数多态和返回值多态,并提醒读者在向下转型前使用instanceof运算符进行判断,确保类型安全。
摘要由CSDN通过智能技术生成

1.向上转型和向下转型的概念。

1.向上转型子--->父 (upcasting)

又被称为自动类型转换:Animal a = new Cat();

2.向下转型父--->子 (downcasting)

又被称为强制类型转换:Cat c = (Cat)a; 需要添加强制类型转换符。

在这里插入图片描述

1.1什么时候需要向下转型?

需要调用或者执行子类对象中 特有的方法。必须进行 向下转型 ,才可以调用。

1.1.1向下转型有风险吗?

容易出现 ClassCastException(类型转换异常)

1.1.2怎么避免这个风险?

instanceof 运算符,可以在程序运行阶段动态判断某个引用指向的对象是否为某一种类型

注意:养成好习惯,向下转型之前一定要使用instanceof运算符进行判断。

不管是向上转型还是向下转型,首先他们之间必须有继承关系,这样编译器就不会报错。★★★★★

2.什么是多态。

多种形态,多种状态,编译运行有两个不同的状态。

1.编译期叫做 静态绑定
2.运行期叫做 动态绑定

eg.

Animal a = new Cat();

编译的时候编译器发现a的类型是Animal,所以编译器会去Animal类中找move()方法找到了,绑定,编译通过。
但是运行的时候和底层堆内存当中的实际对象有关真正执行的时候会自动调用“堆内存中真实对象”的相关方法。a.move();

多态的典型代码:父类型的引用指向子类型的对象

3.什么时候必须进行向下转型?

调用子类对象上特有的方法时。

public class Test01{
   

	public static void main(String[] args){
   

		Animal a1 = new Animal();
		a1.move(); //动物在移动!!!

		Cat c1 = new Cat();
		c1.move(); //cat走猫步!

		Bird b1 = new Bird();
		b1.move(); //鸟儿在飞翔!!!

		// 代码可以这样写吗?
		/*
			1、Animal和Cat之间有继承关系吗&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值