Java多态的解释和应用

  • 多态的含义

多态(polymorphism)源于希腊文字,意思是“多种形式”。在java中我们也有这样有趣的定义,其是指使用父类对象的地方都可以使用子类的对象。简单来说,多态意味着父类型的对象可以访问子类型重写的方法。

比如说我建立了父类型“Animal”和子类型“Bird”;

我可以写出如下代码:

Animal x = new Bird();

我们发现前后的类名“Animal”和“Bird”并不相同,但该语句仍然成立!这就是动态绑定,也是多态的一种表现形式。

  • 使用多态的意义

1、可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

2、可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。

3、接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

4、灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。

5、简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

  • 多态的使用场景以及示例
  1. 循环调用基类对象,访问不同派生类方法

如下列代码

public class example {

public static void main(String[] args) {

        Animal[] example=new Animal[3];

        //第一个样例创建为Animal;

        example[0]=new Animal();

        //第二个样例创建为Bird;

        example[1]=new Bird();

        //第三个样例创建为Cat;

        example[2]=new Cat();

       

        for(int i=0;i<3;i++) {

               example[i].speak();

        }

}

}

class Animal{

String x ;

 Animal(){

        x="animal";

}

void speak() {

        System.out.println("I am an animal");

}

}

class Bird extends Animal{

String x ;

Bird(){

        x="Bird";

}

void speak() {

        System.out.println("I am a Bird");

}

}

class Cat extends Animal{

String x ;

Cat(){

        x="Cat";

}

void speak() {

        System.out.println("I am a Cat");

}

}

运行结果如下:

我们可以清楚的看到最后输出的时候我们使用speak()方法访问了两种派生类和一个基类的数据,这即是多态;

当然我们也要清楚的认识到,派生类的方法必须要重写(override)才能正确达到我们想要的的效果。

  1. 实参是派生类;行参是基类

若我们在之后加入showValue 方法使得基类当作形参。

public static void showValue(Animal x){

x.speak();

}

将最后的输出循环稍作修改:

for(int i=0;i<3;i++) {

               showValue(example[i]);

        }

我们也会得到一样的输出结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值