Java基础知识(四)--多态

【Java基础知识 17】Java继承和多态 关键字extends表明正在构造的新类派生于一个已存在的类。已存在的类称为超类(superclass),新类称为子类(subclass)。超类和子类是 Java 程序员最常用的两个术语。在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中。 阅读详情

微信公众号:Java患者
专注Java领域技术分享

多态

什么是多态

  • 多态是同一个行为具有多个不同表现形式或形态的能力

多态的前提

  • 要有继承/实现关系

  • 要有方法重写

  • 要有父类引用指向子类对象

多态的成员特点

  • Animal a = new Dog();

当代码这个样子的时候,(也就是说当编译类型和运行类型不同)多态就产生了.对象a具有两种类型

编译类型: 声明对象变量的类型,Animal,表示把对象看成什么类型

运行类型:对象的真实类型,Dog

多态中的成员访问特点之成员变量

  • 编译看左边,运行看左边

多态中的成员访问特点之成员方法

  • 编译看左边,运行看右边

多态中的成员访问特点之静态成员方法

  • 编译看左边,运行看左边

  • 静态和类相关,算不上重写,所以,访问还是左边的

  • 只有非静态的成员方法,编译看左边,运行看右边

案例

public class Fu {
    int num = 5;
    static void method1(){
        System.out.println("fu类中的method1");
    }
    void method2(){
        System.out.println("fu类中的method2");
    }
}

public class Zi  extends Fu{
    int num = 8 ;
    static void method1(){
        System.out.println("zi method1");
    }
    void method2(){
        System.out.println("zi method2");
    }
}
public class DuoTaiDemo {
    public static void main(String[] args){
        Fu f = new Zi();
        System.out.println(f.num);//5,与父类一致
        f.method1();//fu类中的method1,与父类一致
        f.method2();//zi method2,编译时与父类一致,运行时与子类一致
        Zi z = new Zi();
        System.out.println(z.num);//8,与zi类中的method一致
        z.method1();//zi method1
        z.method2();//zi method2
    }
}
5
fu类中的method1
zi method2
8
zi method1
zi method2

多态的好处和弊端

  • 提高了代码的维护性(继承保证)

  • 提高了代码的扩展性(多态保证)

  • 不能使用子类特有的属性和行为(弊端)

资料 · 福利

回复 【Java】即可获取最新零基础Java视频资料

回复 【激活】即可获取IDEA、datagrip等系统激活方式

回复 【面试题】即可获取Java技术相关面试题

往期 · 精彩

专注分享Java技术,跟我一起学习吧

长按识别二维码关注

Cadence SIP Layout 简单教程-第一章 以摄像头模组软硬结合板为例,描述layout的整个完整过程,从而掌握基本技能。 第一章 准备工作 第一节 原理图不用说layout前需要绘制原理图,原理图不在本文讨论范围内,所以列为准备工作。 需要特别说明的是,绘制原理的最终目的是导出网络表,网络表中的重要参数footprint是让layout软件选择正确封装的关键,所以这里讲解一下原理图设置footprint的位置。在原理图中双击零件,... 阅读详情

相关推荐

AUTOSAR入门

一、AUTOSAR是什么 AUTOSAR组织自己的介绍是 AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automot...

天涯遍地是小草的博客 3万+

java new左边_java继承:编译与运行的关系(编译看左边,运行看右边)

“成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边。”意思是:当父类变量引用子类对象时(Fu f = new Zi();),在这个引用变量f指向的对象中,他的成员变量和静态方法与父类是一致的,他的非静态方法,在编译时是与父类一致的,运行时却与子类一致(发生了复写)。例:class Fu {intnum = 5;static void method4() {System.out.prin...

weixin_42322467的博客 454

告别绕线!用Altium Designer从零设计一个PCB平面变压器(附3D模型)

本文详细介绍了如何使用Altium Designer从零设计一个PCB平面变压器,包括磁芯选型、电气参数计算、PCB设计实战技巧以及3D验证与生产输出。通过将绕组直接集成到PCB层中,配合嵌入式磁芯,实现了小型化、高功率密度的电源设计,适用于中低电流、高频应用场景。附3D模型,帮助读者快速掌握这一创新设计流程。

weixin_33716154的博客 441

Java基础知识复习(四)--多态

面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 多态的基本介绍 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即

qq_44956118的博客 187

CLCD土地覆盖数据在ArcGIS中的实战应用:从导入到空间分析的完整指南

本文详细介绍了CLCD土地覆盖数据在ArcGIS中的实战应用,从数据导入到空间分析的完整流程。涵盖坐标系转换、数据质量检查、土地利用变化检测等核心技术,并分享城市扩张模拟和跨数据集融合等高级应用技巧,帮助研究者高效利用这一权威数据集进行环境监测和城市规划。

weixin_29292535的博客 589

抖音用户主页视频数据爬虫详解(点赞,收藏,分享等)

的包中有个max_cursor参数,请求载荷中也有一个这样的参数,每次请求的数据中max_cursor是下一个请求的载荷,,,同时has_more为1时候代表还能请求,0为不能请求,我们做如下判断。最后发现cookie很容易过期,批量爬取有点困难,,,,我们采用drissoinpage进行自动化获取。首先进行抓包分析,,,随便找个主页,f12,关键词搜索,发现这个包是以post开头。请你第一次运行先按0,进行登录(或者触发反爬的时候),登录完成之后,按1进行爬取,完整代码请在知识星球。

m0_74823507的博客 3429

Java——多态的基础知识

例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅可以显示号码,还可以显示头像,地区等。圈复杂度是一种描述一段代码复杂程度的方式.一段代码如果平铺直叙,那么就比较简单容易理解.而如果有很多的条件分支或者循环语句,就认为理解起来更复杂.因此我们可以简单粗暴的计算一段代码中条件语句和循环语句出现的个数,这个个数就称为"圈复杂度".如果一个方法的圈复杂度太高,就需要考虑重构.不同公司对于代码的圈复杂度的规范不一样.一般不会超过10.重写的概念:也称为覆盖。

2302_79485648的博客 1437

用Blender给ArduPilot无人船编队设计灯光秀:从建模到飞行的保姆级教程

本文详细介绍了如何利用Blender和ArduPilot为无人船编队设计灯光秀的全流程技术方案。从3D动画设计、坐标转换、数据导出到ArduPilot飞控配置和灯光控制,提供了一套完整的保姆级教程,帮助开发者实现水面灯光编队表演。

weixin_29213525的博客 384

Java基础知识总结——多态

文章目录Java多态知识总结一、运行时多态运行时多态出现的三个必要条件重写的条件(两同两小一大)运行时多态实例二、编译时多态① 通过函数重载实现多态重载的条件(“两同一不同”)函数重载实现多态的实例② 通过泛型实现多态泛型实现多态的实例运行时多态与编译时多态的区别 Java多态知识总结 同一个行为具有多个不同的表现能力或形态的能力即为多态。根据何时确定执行多态方法中的哪一个,可以将多态分为编译时多态和运行时多态。 一、运行时多态 Java的引用变量有两种类型:编译时类型和运行时类型。编译时类型由声明该变量时

不会飞的鱼的博客 389

C#集成Bartender:动态图片标签打印的实战与优化

本文详细介绍了在C#程序中集成Bartender实现动态图片标签打印的实战方法与优化策略。通过具名数据源绑定、图片对象尺寸控制等核心技巧,解决了动态图片显示/隐藏的难题,并提供了从模板设计、代码架构到性能优化、错误处理的全流程指南,帮助开发者构建稳定高效的工业级标签打印系统。

weixin_29216957的博客 431

SRA数据下载的一个坑

SRA数据真坑啊!

xuzhougeng blog 3508

Java 多态以及多态的实现

编译环境 windows 10 JDK 1.8 eclipse 目录    一、多态的基本概念    二、继承    三、多态的实现    四、多态存在的三个必要条件    五、重写    六、抽象类和抽象方法    七、接口    八、向上转型实现多态    九、多态的优缺点 前言   多态,多态,多态到底是一个什么样的定义呢,充满着好奇心,决定去研究一番。 多态(Polymorphism)的基本概念   多态意味着父类的变量可以指向子类对象。多态是同一个行为具有多个不同表现形式或形态的能力,就

Karbob 2447

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 151

Java的多态

Java多态是面向对象编程的核心特性,包括编译时多态和运行时多态。

2401_84284464的博客 1157

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java多态性:Java什么是多态?

多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。 对面向对象来说,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通...

jijiangpeng的博客 5548

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java中多态

目录 1、概述 2、多态的定义与使用格式 3、多态的特点 4、多态成员的特点 5、instanceof 关键字 6、多态转型 7、多态的优缺点 1、概述 多态就是描述一个事物的多种形态,如小明是一个学生,他既是人,也是学生,出现两种形态。Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变...

ONESTARの博客 4285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java基础知识——16.多态

我们先来回顾一下前面的知识利用封装,我们可以将一些零散变量和方法包装起来,这样要用时就直接利用对象来调用里面的变量和方法。而当我们的对象原来越多的时候,有些代码就会重复,所以,我们将这些重复的代码提取出来,封装成一个类,叫做父类,然后其余的类继承它,这就是继承。那什么时候用到多态呢?我们可以思考下面这样的一个场景。我们有一个学生管理系统,里面有老师,学生,管理员三种类型的User;我们有一个注册功能,就是一个方法,我们需要给这个方法传一个参数,请问,传什么参数??老师?那只能实现老师注册;学生?

m0_52096593的博客 1154

JAVA基础知识总结(四)

Java 面向对象编程

USAcownoodle的博客 872

Java多态的理解

Java中多态的理解             继承的基础知识        Java中有三大特性:继承、封装、多态        多态可以说是建立在继承的基础上的,所以我们先来理解一下继承。        Java中继承的概念是:继承是指一个对象直接使用另一对象的属性和方法(此处引用百度百科)。也就是当一个子类继承了一个父类时,子类也同时继承了父类的非静态属性和方法(可以继承父类的private方...

xiyoucode的博客 1594

java的多态

java的多态

听海边涛声 806

Java基础之Java的多态

在本文中,我们深入探讨了Java多态性的概念、实现方式以及它在面向对象编程中的重要性。多态性是Java语言的核心特性之一,它允许我们通过父类引用调用子类的方法,从而增强了代码的灵活性和可扩展性。我们学习了多态的两种类型:编译时多态和运行时多态,以及它们在实际编程中的应用。编译时多态主要通过方法重载和重写实现,而运行时多态则依赖于继承和方法重写。同时,我们也指出了多态的一些限制,例如无法访问子类特有的方法和属性。

daadaddc的博客 2310

Java中的多态:什么是多态?

Java中的多态:什么是多态? 多态性是面向对象编程的三大重要特征之一,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。 对面向对象来说,多态分为编译时多态和运行时多态。 其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是大家通常所说的多态性。 Java实现多态有 3

java领域分享 9728

Java多态

我们继续来看创建对象"狗"的这一行代码//Animal为父类,dog和cat为子类此时" = "的左边为Animal,其编译类型就为Animal," = "的右边为Animal,其运行类型就为dog。

qq_65501197的博客 1160

【Java基础知识 20】多态

本文围绕 Java 多态展开,先阐述多态概念,指出其是继承 / 实现关系下的状态,含对象与行为多态,实现需满足继承 / 实现、父类引用指向子类对象、方法重写三个前提,并结合动物类继承案例演示。接着分析多态优点,包括解耦(便于修改维护)和父类形参接收子类对象(提升扩展性)。还提及多态缺点,即无法调用子类独有功能,进而介绍多态下的类型转换(自动与强制转换),说明强制转换的风险,强调用instanceof判断对象真实类型以避免异常,全面覆盖多态核心知识。

weixin_60274730的博客 574

Java 多态

对象的多态性允许我们编写更加灵活和可扩展的代码。通过继承和接口,我们可以设计出能够以统一的方式处理不同对象的系统。多态性是面向对象设计中实现“开闭原则”(对扩展开放,对修改封闭)的关键技术之一。向上转型:子类对象转为父类类型,是自动且安全的,但访问范围受限于父类。向下转型:父类对象转为子类类型,需要显式转换且要确保类型安全,可以访问子类特有属性和方法。

y123916的博客 1387

java之多态

java多态

DJQ351044djqDJQ的博客 1143
上一篇: Java基础知识(三)
下一篇: Java基础知识(五)--抽象类&接口
新时代Java农民工
博客等级 码龄7年 16粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值