多态的运用

Java中的继承之后,继续对面向对象的主要实现办法中的多态进行了学习。在编写代码的时候着实遇到了一些困难,首先在继承似乎并没有掌握扎实的情况下联系多态,两者虽说没有相似点,可依然容易出现思维混乱其次,多态的核心内容就我看来不难理解,而在真正运用到逻辑上有时又会导致大脑短路在此继续把个人的小领悟加载到博客中。

 

多态,简单的理解,是对于同种方法的多种表现形式。静态时的多态表现为重载,动态时的表现为重写,以下着重描述动态的多态。从语法上说,还是基于继承的,在继承的基础上,子、父类分别创建构造器,在测试类中,将子类的构造器分别赋值给父类对象,再由父类对象完成调用所需子类方法的步骤。一下对于多态中的一些行为尝试做出合理解释。

 

上行

       在变量的声明后,我们通常会对某些变量进行计算,之后进行再次的赋值,其中可能会涉及到变量类型的转换。如double型转换为float:

float i = 1.2;

double s = i;

此称为自动类型转换。同样的也可以将double型的变量转换为float型甚至int型,术语上似乎称之为“精度丢失”,我们需要在赋值时加上 “(int)”,称之为强制类型转换:

double i = 1.33;

int s = (int) i;

        当我们将子类变量赋值给父类对象时,称之为“上行”,类似于上述中的自动类型转换,是多态的表现。

 

Instanceof关键字在多态中的应用

Instanceof关键字的使用使得多态的功能更加出色——方便程序员初期的编写以及后期的维护。

Instanceof的功能是判断一个对象是否为某个类的对象。在运用到例如if-else一类的语句中后起到的作用便是程序自动识别对象类型,将此处与当前对象判断的已知类设为子类,便可以轻松对将当前对象赋给你想要的值。

 

 

多态的实际应用

在我实际编写代码时,发现了一些捷径,当然也许是我起点比较低….

new (方法名)()的直接使用

父类:Animal;

子类:Rabbit;

子类方法:eat(){}

其他类:Master;

测试类:Text;

Animal animal = new Rabbit();

Master.eat(animal);

此处可省略“Animal animal = new Rabbit();”一步,直接可以写成:

Master.eat(new Rabbit);

 

使用Instanceof进行判断后,直接使用强制类型转换

Animal animal = new Rabbit();

If(animal instanceof Rabbit){

  Rabbit rabbit = (Rabbit) animal;

  rabbit.eat();

}else …..

突然觉得这个方法的作用并不明显,至少在目前所做的练习中意义不大,不过我想在涉及到更加复杂的逻辑时因该会有更出色的表现。

 

 

在多态中,一般的,我们使用上行将子类变量赋值给父类对象,当再次使用该变量时,可以直接访问子类方法及变量;多态也可以巧妙运用在数组当中,更方便我们管理维护代码,同时为Java助了一臂之力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值