栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象的特性三:多态性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象的特性三:多态性

一、何为多态

JAVA中同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象(或子类的对象赋给父类的引用)。

可以理解为一个事物的多种形态,比如说打印机,在平常我们会把彩色打印机、黑白打印机都叫做打印机,而彩色打印机、黑白打印机就叫做打印机的多种形态。将打印这个操作分别用于彩色打印机、黑白打印机,就可以产生不同的打印效果。

图示:

二、使用多态性有什么好处
  • 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。———>具体应用:继承
  • 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。(多态的真正作用)
三、多态的使用

使用多态的前提

  • ​ ① 类的继承关系
  • ​ ② 方法的重写

有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。

总结:编译,看左边;运行,看右边。

四、多态的举例

首先定义Animal类,其中有run方法

public class Animal {


    public void run(){
        System.out.println("动物可以运动");
    }
}

再定义Fish类,继承于Animal类,再重写Animal的run方法

public class Fish extends Animal{

    public void run(){
        System.out.println("鱼可以游");
    }
}

再定义Dog类,继承于Animal类,再重写Animal的run方法

public class Dog extends Animal{

    public void run(){
        System.out.println("狗可以跑");
    }

}

在测试类中测试

public class MyTest {

    public static void main(String[] args) {

        Animal dog = new Dog();
        Animal fish = new Fish();

        dog.run();
        fish.run();
    }
}

可以看到下面的结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9TzSZFp-1639562823374)(C:Users11425AppDataRoamingTyporatypora-user-imagesimage-20211215180315602.png)]

可以发现虽然我们定义的都是Animal类,但是执行的都是子类的方法,这就是多态的体现。

五、instanceof的使用:

① a instanceof A:判断对象a是否是类A的实例。如果是,返回true;如果不是,返回false。
② 如果 a instanceof A返回true,则 a instanceof B也返回true.其中,类B是类A的父类。
的实例。如果是,返回true;如果不是,返回false。
② 如果 a instanceof A返回true,则 a instanceof B也返回true.其中,类B是类A的父类。
③ 要求a所属的类与类A必须是子类和父类的关系,否则编译错误。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号