首页 > 编程语言 >Java学习, 多态

Java学习, 多态

时间:2024-11-27 09:04:29浏览次数:5  
标签:sound Java void 多态 Cat 学习 Animal class

Java 多态是面向对象编程中的一个核心概念,它允许对象在运行时表现出不同的行为。多态性主要通过继承和接口实现,使得一个引用变量在不同情况下可以指向不同类的对象,并调用这些对象的方法。

多态的优点
消除类型之间的耦合关系
可替换性
可扩充性
接口性
灵活性
简化性

编译时多态(静态多态):通过方法重载实现

class Example {
    void display(int a) {
        System.out.println("Integer: " + a);
    }
 
    void display(String a) {
        System.out.println("String: " + a);
    }
}
 
public class Test {
    public static void main(String[] args) {
        Example obj = new Example();
        obj.display(10); // 调用 display(int a)
        obj.display("Hello"); // 调用 display(String a)
    }
}

 

运行时多态(动态多态):通过方法重写和接口实现。

方法重写是指子类重新定义父类中已经定义过的方法。运行时多态允许程序在运行时根据对象的实际类型来调用相应的重写方法。

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}
 
class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}
 
class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("Cat meows");
    }
}
 
public class Test {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // 父类引用指向子类对象
        Animal myCat = new Cat(); // 父类引用指向子类对象
 
        myDog.sound(); // 输出: Dog barks
        myCat.sound(); // 输出: Cat meows
    }
}

接口实现:接口提供了一种实现多态的强大机制。一个类可以实现多个接口,并通过接口引用来调用实现类的方法。

interface Animal {
    void sound();
}
  
class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}
 
class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Cat meows");
    }
}
 
public class Test {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // 接口引用指向实现类对象
        Animal myCat = new Cat(); // 接口引用指向实现类对象
 
        myDog.sound(); // 输出: Dog barks
        myCat.sound(); // 输出: Cat meows
    }
}

 

标签:sound,Java,void,多态,Cat,学习,Animal,class
From: https://blog.csdn.net/xuann/article/details/144070395

相关文章

  • 【最新原创毕设】基于Java的面向中职物联网专业教师的课程资源服务平台(免费领源码)可做
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,果园信息统计管理系统的信息通过网络进行信息管理掀起了热潮,所以针对果园信......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设物......
  • AVL树详解及Java实现
    (数据结构)AVL详解文章目录(数据结构)AVL详解1.前言思考试验结论分析2.AVL树的相关概念平衡因子AVL树的特点3.二叉搜索树的失衡添加元素造成的失**衡****添加元素失衡的特点**1.LL-右旋转(单旋)2.LR-左旋转后再右旋转(双旋)3.RR-左旋转以及RL-右旋转后再左旋转添加元素......
  • 初识java(1)
    大家好,今天是我们开启java的新篇章,这意味着又是一个新的开始,那么我们就来看看这个编程语言。一.标识符在程序中由用户给类名,方法名或者变量所取的名字。硬性规则:标识符中可以包含字母,数字以及下划线和$符号等等。注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。......
  • Java DAY8
        用Lambda函数替代匿名内部类对象(在匿名内部类的基础上再简化)Lambda省略更优雅,但是非必须方法引用(可遇而不可求,以看得懂为主)    静态方法引用        类名::静态方法名        实例方法引用    特定类的方法引用......
  • 第十章 JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介JavaScript是一种基于对象(0bject)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互它无须经过先将数据传给服务器端(Server)、再传回来的过程,而直接可以由客户......
  • java集合及源码
    目录一.集合框架概述1.1集合和数组数组 集合1.2Java集合框架体系常用二. Collection中的常用方法        添加        判断   删除      其它集合与数组的相互转换 三Iterator(迭代器)接口3.0源码3.1作用及格式3.2原理3.3......
  • RocketMq学习(一)
    一、RocketMQ介绍MQ:消息中间件是什么?消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。消息队列RocketMQ是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间......
  • JAVAJSP物业管理系统源码JSP小区管理系统源码JSP小区物业管理系统源码JSP社区管理系统
    一、项目介绍系统的使用者分为用户(业主)和管理员(物业)两类,根据使用者不同,将有不同的主页,对应不同的功能权限。将本系统分为用户子系统和管理员子系统。在用户子系统中,使用者通过账号密码(用户)登入系统,进入主页,通过主页链接,进入小区服务,小区公告,信息查询,系统功能四个功能模块,在模......