首页 > 其他分享 >多态

多态

时间:2024-08-14 11:30:53浏览次数:13  
标签:makeSound void 多态 Cat Animal 方法

多态的概念

定义:

它允许不同的对象对同一操作或方法调用做出响应,但具体的行为会根据对象的实际类型而有所不同。多态性提供了一种方式,使得代码能够以统一的接口与不同的数据类型交互,而不需要关心这些数据类型背后的具体实现细节。

多态的好处

  • 提高代码的可读性和可维护性。
  • 降低代码间的耦合度,增加模块化。
  • 允许扩展现有代码而无需修改现有逻辑。

例:

// 定义一个动物的抽象类
abstract class Animal {
    // 抽象方法,具体实现由子类提供
    abstract void makeSound();
    
    // 一个具体的方法,可以在子类中直接使用
    void eat() {
        System.out.println("This animal eats food.");
    }
}

// 定义一个狗类,继承自Animal类
class Dog extends Animal {
    // 重写makeSound方法,提供狗的叫声
    @Override
    void makeSound() {
        System.out.println("Woof woof!");
    }
}

// 定义一个猫类,继承自Animal类
class Cat extends Animal {
    // 重写makeSound方法,提供猫的叫声
    @Override
    void makeSound() {
        System.out.println("Meow meow!");
    }
}

// 主类,用于演示多态
public class PolymorphismDemo {
    public static void main(String[] args) {
        // 创建Animal类型的数组,但实际存储的是Dog和Cat对象
        Animal[] animals = {new Dog(), new Cat()};
        
        // 遍历数组,多态性在这里体现:尽管引用类型是Animal,但实际调用的方法是对象实际类型的makeSound
        for (Animal animal : animals) {
            animal.makeSound(); // 运行时多态
            animal.eat();       // 编译时多态,因为eat方法在Animal类中定义
        }
    }
}

在这个示例中:

  • Animal 是一个抽象类,它定义了一个抽象方法 makeSound() 和一个具体方法 eat()
  • DogCatAnimal 的子类,它们重写了 makeSound() 方法,提供了具体的叫声实现。
  • PolymorphismDemo 类中的 main 方法创建了一个 Animal 类型的数组,但实际存储的是 DogCat 的对象。
  • 通过 Animal 类型的引用调用 makeSound() 方法时,由于多态性,实际执行的是每个对象实际类型的 makeSound() 方法。这就是运行时多态的一个例子。
  • 同时,调用 eat() 方法时,由于这个方法在 Animal 类中已经定义,所以这是编译时多态的一个例子。

标签:makeSound,void,多态,Cat,Animal,方法
From: https://www.cnblogs.com/jmy3/p/18358538

相关文章

  • 多态的机制原理
    多态的机制原理本质上多态分两种1、编译时多态(又称静态多态)2、运行时多态(又称动态多态)多态通常有两种实现方法1、子类继承父类(extends)2、类实现接口(implements)要使用多态,在声明对象时就应该遵循一条法则:声明的总是父类类型或接口类型,创建的是实际类型。例来说,假设我们......
  • [JAVA] 什么是多态?多态的使用和代码实现(超详细版)
    理解多态在JAVA中,多态是面向对象编程的重要特征之一,多态意味着在程序中同一个行为具有多种不同的表现形式。为了更好的理解多态的含义和使用方法,我们可以利用生活中的例子来帮助我们学习比如一些动物们都有跑,跳,吃等等的通用行为能力,不同的动物针对这些行为的表现形式是不同......
  • java继承与多态
    继承与多态一、概念继承继承是面向对象编程中的一个基本概念,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。通过继承,子类可以复用父类的代码,同时也可以添加自己的特定属性和方法。在Java中,继承是通过extends关键字来实现的。一个类只......
  • 详解C++的四大特性(封装,继承,多态,抽象)
    C++的四大特性是面向对象编程(OOP)的核心概念,分别是封装、继承、多态和抽象。这些特性共同构成了C++作为面向对象编程语言的基础。1.封装(Encapsulation)概念:封装是将数据和操作数据的方法绑定在一起,限制对数据的直接访问。通过将数据隐藏在类内部,只暴露必要的接口(如public成......
  • 接口和多态的区别
    接口和多态的区别区别:概念层面:接口是一种定义行为规范的方式,而多态是这种行为规范在运行时的具体表现。实现机制:接口通过关键字interface来定义,而多态的实现可能涉及到接口的实现、继承和方法重写。目的:接口的目的是为了定义一个共同的规范,使得不同的类可以有统一的调用方......
  • 值类型和引用类型、装箱和拆箱、静态类和普通类、方法的重载、继承和多态
    目录值类型和引用类型的区别?值类型(ValueTypes)定义:特点:示例:引用类型(ReferenceTypes)定义:特点:示例:举例说明:总结:装箱和拆箱装箱(Boxing)特点:示例:拆箱(Unboxing)特点:示例:示例代码:装箱和拆箱的影响最佳实践:静态类和普通类的区别?静态类(StaticClass)普通......
  • Chapter 30 多态
    欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!文章目录前言一、基本概念二、抽象类前言多态(Polymorphism)是面向对象编程中的核心概念,本章将详细讲解Python中多态的实现方式以及如何应用多态提高代码的可维护性。本篇文章参考:黑马程序员......
  • Java 多态、抽象
    多态的概念和实现多态:一个事物在不同状态下的多种状态举例:学生是人,教师是人,医生是人。(人在不同职业下的不同状态)汽态的水,液态的水,固态的水。(水在不同状态下的不同状态)实现多态的前提:1、必须要有继承关系2、需要有方法的重写(不是必须要重写,但是重写可以体现子类的专......
  • 重学面向对象-基础篇03封装、继承和多态
    封装、继承和多态基础概念封装:把对象的属性和方法结合城一个独立的整体,隐藏实现细节,并提供对外访问的接口继承:从已知的一个类中派生出一个新的类,叫子类。子类实现了父类所有非私有化的属性和方法,并根据实际需求扩展出新的行为多态:多个不同的对象对同一消息作出响应,同一消息根......
  • Java SE核心技术——11多态
    多态的概念多态是指一个变量在不同的环境中有不同的体现,是面向对象特征之一多态就是同一个接口,使用不同的实例而执行不同的操作多态是对象多种表现形式的体现:同一时间发生在不同对象上会产生不同的结果。多态的优点消除类型之间的耦合关系可替换性可扩充性接口性灵活......