Java面向对象多态

这篇具有很好参考价值的文章主要介绍了Java面向对象多态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

多态概述

Java 多态包括以下三种方式

方法重写(Override)

向上转型(Upcasting)

实现多态


多态概述

Java 多态是指同一种类型的对象,在不同的情况下有着不同的状态和行为。它是基于继承、重写和向上转型等特性实现的,多态是面向对象编程的三大特征之一,其他两个分别是封装和继承。

Java 多态包括以下三种方式

方法重写(Override)

子类可以对从父类继承的方法进行重写,以便根据子类的需要来覆盖掉父类中的方法实现。这样在调用时,可以根据对象的不同来执行对应的方法。

例如:文章来源地址https://www.toymoban.com/news/detail-411970.html

class Animal {
    public void move() {
        System.out.println("动物移动");
    }
}

class Cat extends Animal {
    @Override
    public void move() {
        System.out.println("猫在走路");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Animal cat = new Cat();
        animal.move();
        cat.move();
    }
}

向上转型(Upcasting)

将子类对象转换成父类引用,这样就可以使用父类中定义的方法和属性,但不能访问子类独有的方法和属性。这种特征使得可以将子类对象作为父类的参数进行传递,提高代码的灵活性。

例如:

class Animal {
    public void move() {
        System.out.println("动物移动");
    }
}

class Cat extends Animal {
    @Override
    public void move() {
        System.out.println("猫在走路");
    }
    public void catchMouse() {
        System.out.println("猫在抓老鼠");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.move(); // 调用子类中的方法
        //animal.catchMouse(); // 编译错误,不能访问子类独有的方法
    }
}

实现多态

通过父类引用指向子类对象,可以实现多态性,使得同一个方法调用可以在不同的对象上具有不同的行为。这种特征使得程序更加灵活,可以根据需要来确定对象的类型。

例如:

class Animal {
    public void move() {
        System.out.println("动物移动");
    }
}

class Cat extends Animal {
    @Override
    public void move() {
        System.out.println("猫在走路");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("狗在跑步");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal animal1 = new Cat();
        Animal animal2 = new Dog();
        animal1.move(); // 同一种方法调用不同的对象
        animal2.move(); // 同一种方法调用不同的对象
    }
}

到了这里,关于Java面向对象多态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java SE语法篇】8.面向对象三大特征——封装、继承和多态

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 面向对象三大特性:封装、继承和多态。 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部

    2024年02月01日
    浏览(59)
  • 【Java面向对象】多态的详细介绍,简单易懂,看这一篇就够了

    A: 方法或对象具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承的基础之上的。简单来说,多态是具有表现多种形态的能力的特征。 消除类型之间的耦合关系 可替代性 可扩充性 接口性 灵活性 简化性 重载式多态在编译时已经确定好了。方法名相同而参数

    2024年01月20日
    浏览(69)
  • Java面向对象——多态、Object类、instanceof关键字以及final关键字

    总之,多态是面向对象编程中一个非常重要的概念,通过它可以实现统一的接口来操作不同的对象,提高代码的可读性和可维护性。在实际编程中,多态性的使用可以使代码更加灵活和扩展性更强。方法重写是实现多态的基础。 重写如下所示 关于hashCode方法的重写: 重写t

    2024年02月12日
    浏览(69)
  • c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】

    目录 内存管理、适用 区别 C 手动内存管理:C语言没有内置的安全检查机制,容易出现内存泄漏、缓冲区溢出等安全问题。 适用于系统级编程 C++ 手动内存管理:C++需要程序员手动管理内存,包括分配和释放内存,这可能导致内存泄漏和指针错误。 适用于游戏引擎和系统级编

    2024年02月08日
    浏览(76)
  • 【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    掌握final 的主要作用及使用; 掌握对象多态性的概念以及对象转型的操作; 掌握instanceof 的主要作用及使用; 在Java 中 final称为终结器,在Java 里面可以使用 final定义类、方法和属性,用于表示不可变性 。 final 类:当一个类被声明为 final 时,意味着该类不能被

    2024年02月16日
    浏览(52)
  • 面向对象详解,面向对象的三大特征:封装、继承、多态

    一、面向对象与面向过程 面向对象编程 (Object-Oriented Programming,简称OOP)和 面向过程编程 (Procedural Programming,简称PP)是两种不同的 编程范式 。 面向对象编程强调把问题分解成对象,通过封装、继承和多态等机制,来处理对象之间的关系 。每个对象都可以独立地处理自

    2024年02月21日
    浏览(53)
  • java的面向对象编程(oop)——static概述及初始单例设计模式

    过了入门阶段,开始学习进阶语法了。每天进步一点点,打好基础,daydayup! 什么是面向对象编程(oop),可以看这篇 java的面向对象编程(oop)概述及案例  static的意思为静态,用于修饰成员变量及成员方法。 成员变量根据有无static可以分为两种 ——类变量及实例变量 1,类

    2024年01月19日
    浏览(53)
  • 【JavaSE】面向对象之多态

    通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 必须要满足如下几个条件,缺一不可: 必须在 继承 体系下 子类必须要对父类中方法进行 重写 通过父类的引用调用重写的方法 定义测试类TestAnimal.java 编译器在编译代码时

    2024年02月11日
    浏览(38)
  • 面向对象的多态

    7. 面向对象特征三:多态性 概念: 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式, 女朋友养宠物 王者荣耀英雄 7.1 多态的形式和体现 7.1.1 对象的多态性 多态性,是面向对象中最重要的概念, 在 Java 中如何体现的:对象的多态性:父类的

    2024年02月08日
    浏览(53)
  • 【C++】面向对象之多态

    文章内的所有调试都是在vs2022下进行的, 部分小细节可能因编译器不同存在差异。 概念引入 对于一个火车票售票系统, 可能会有多重角色, 比如普通成人类、学生类、军人类、儿童类等等… 这些类可能都是从某个基类派生出来的, 而且每个类都有一个基本需求,就是买票

    2024年02月01日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包