Java中的多态

多态是java中面向对象的中的三大特征之一,分别为封装,继承,多态。

在现实世界中,我们对一种事物有多种描述形态,我们创建一个student学生类,再创建一个person人类,而我们的人物张三即是学生,他还是一个人,这就出现两种形态。

而java是一门面向对象的语言,同样可以用于描述一个事物的多种形态。

构成多态的三种条件

·必须有继承关系

·父类引用指向子类对象 例:Person per = new student();

·重写父类中的方法

我们创建了一个类

 

并给他创建一个子类,在子类中重写他的方法。

 

用父类的引用指向子类的对象,我们在调用方法时,就会发现它调用的是子类中的方法。

 

我们可以理解为,多态是同一个行为具有多个不同表现形式和形态的能力,多态就是一个接口,使用不同的实例而执行不同的操作。

我们应该多使用多态,多态是面对抽象编程,它有很多优点

·消除类型之间的耦合关系

·可替换性

·可扩充性

·灵活性

·简化性

我们要注意的是,在父类引用指向子类对象时,在编译过程中,编译器关心的是在父类中有没有这个方法,简单来说就说只检查语法,而在运行阶段它底层运行的是子类中的方法。这就是为什么同一个行为有多个不同表现形式和形态的能力。

多态中的向上转型和向下转型

向上转型,多态本身就是向上转型的过程。

例: 父类类名 父类引用 = new 子类类名();

使用场景:当不需要面向子类类型时,通过提高扩展性,或使用父类的功能就能完成相应的操作。

向下转型

一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用的数据。

例:子类类名 子类引用 = (子类类名) 父类引用

使用场景:当要使用子类中特有的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值