什么是多态?多态的具体体现是?JAVA的动态绑定机制是?

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程 Termux 安装kali 阅读详情

多态:方法或对象具有多种形态。是面向对象编程(Object Oriented Programming)的第三大特征,建立在封装和继承的基础之上。
OOP三大特征:封装、继承、多态。

多态的具体体现
1.方法多态
(1)重载体现多态
(2)重写体现多态

重载与重写的区别:
在这里插入图片描述
例:
在这里插入图片描述在这里插入图片描述
2.对象多态
(1)对象的编译类型和运行类型可以不一致
(2)编译类型在定义时就确定,不能变化
(3)对象的运行类型时可以变化的
(4)编译类型看定义时=号的左边,运行类型看=号的右边

多态的向上转型
1.本质:父类的引用指向了子类的对象
2.语法:父类类型 引用名 = new 子类类型();
3.特点:
(1)可以调用父类中的所有成员(需遵守访问权限)
(2)不能调用子类的特有成员
(3)最终运行效果看子类的具体实现
例:父类A 子类B
A a = new B();

多态的向下转型
1.本质:把指向子类对象的父类引用,转成指向子类对象的子类引用
2.语法:子类类型 引用名 = (子类类型)父类引用;
3.特点:
(1)只能强转父类的引用,不能强转父类的对象
(2)可以调用子类的所有成员
(3)父类的引用必须指向当前目标类型的对象
例:B b = (B) a; //父类引用a原来指向的是B类对象,满足(3)

JAVA的动态绑定机制
1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用

注意事项:
属性没有重写!

例:
class A {
int count = 10;
public void display(){
System.out.println(this.count);
}
}

class B extends A {
int count = 20;
public void display(){
System.out.println(this.count);
}
}

public class Poly {//主类
public static void main(String[] args) {
B b = new B();
System.out.println(b.count); //输出20,属性看编译类型
b.display(); //输出20,方法看运行类型,先从B类看,B类重写了display方法,调用该类的display()
A a = b; //两个引用都指向同一个B类对象
System.out.println(a == b); //输出true,指向同一个对象则地址一样,实际是判断两个引用的地址值
Systm.out.println(a.count); //输出10
a.display(); //输出20,方法看运行类型
}
}

【AI智能体】最强AI编程利器 Claude Code 从部署到项目实战详解 最强AI编程利器 Claude Code 从部署到项目实战详解 阅读详情

相关推荐

第八章 面向对象编程(中级) 下

第八章 面向对象编程(中级) 下

你好, 我在学java的博客 380

多态的表现形式

多态有四种体现形式: 1. 接口和接口的继承。 2. 类和类的继承。 3. 重载。 4. 重写。 其中重载和重写为核心。 重载:重载发生在同一个类中,在该类中如果存在多个同名方法,但是方法的参数类型和个数不一样,那么说明该方法被重载了。 重写:重写发生在子类继承父类的关系中,父类中的方法被子类继承,方法名,返回值类型,参数完全一样,但是方法体不一样,那么说明父类中的该方法被子类重写了。 ...

Arvin_SC的博客 6492

yolo算法-室内人头检测数据集-927张图像带标签-头部.zip

yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法;包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中;yolo格式:<class> <x_center> <y_center> <width> <height>, 其中:<class> 是目标的类别索引(从0开始)。<x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。<width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

Java多态】三大特征之多态详解

三大特性: 继承链接: https://blog.csdn.net/qq_43436117/article/details/113825027. 封装链接:https://blog.csdn.net/qq_43436117/article/details/113817402. 1.多态 1.1引入 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不

qq_43436117的博客 1418

什么是多态多态具体体现有哪些?

多态:方法或对象具有多种形态,是面向对象的第三大特征,是建立在封装和继承基础之上的。(1)对象的编译类型和运行类型可以不一致,编译类型在定义时就已确定,不可再改变。(2)对象的运行类型是可以改变的,可以通过getClass()来查看运行类型。(3)编译类型看定义时=号的左边,运行类型看定义时=号的右边。(1)重载体现多态 (2)重写体现多态

m0_74016585的博客 369

什么是多态多态具体体现在哪些?

文章目录一、什么是多态?主要体现在哪里?二、简单举例演示 本文介绍面向对象的多态。 一、什么是多态?主要体现在哪里? 多态:就是类的方法或者对象具有多种状态,是OOP的第三大有太特征,是建立在封装和继承基础上的。 体现哪些方面? 1 .方法多态 对象多态 二、简单举例演示 package com.hspedu.homework; public class Homework16 { public static void main(String[] args) { ..

weixin_43000547的博客 6325

多态体现方式

1、方法多态性,体现在方法的重载和覆写上   方法的重载是指同一个方法名称,根据其传入的参数类型、个数和顺序的不同,所调用的方法体也不同,即同一个方法名称在一个类中有不同的功能实现;   方法的覆写(重写)是指父类之中的一个方法名称,在不同的子类有不同的功能实现,而后依据实例化子类的不同,同一个方法,可以完成不同的功能。 2、对象多态性,体现在父、子对象之间的转型上 (1)向上转型(Upc...

weixin_33982670的博客 890

JAVA多态

JAVA面向对象编程有三大特性:封装、继承、多态多态就是不同对象对同一物体或事件发出不同的反应或响应。比如stuendt是一个父类,那么在操场上上体育课的学生和在教室里面的学生就是它的子类。这时上课铃声响了,上体育课的学生去操场,在教室里面上课的学生则是回教室,不同的学生有着不同的反应,这就是多态

qq_61466402的博客 322

Java中的多态(一万字详解)

【代码】Java中的多态(一万字详解)

林二月的博客 715

Java~多态

多态Java面向对象编程的三大特征之一,指的是方法或对象具有多种形态。多态的实现依赖于封装和继承,具体体现在方法重载、重写以及对象的多态性上。方法的多态通过重载和重写实现,而对象的多态则涉及编译类型和运行类型的不同。多态的使用包括向上转型和向下转型,向上转型是父类引用指向子类对象,向下转型则是将父类引用强制转换为子类类型。多态的应用场景包括多态数组,即数组定义类型为父类,实际元素类型为子类。此外,Java动态绑定机制确保调用对象方法时,方法与对象的运行类型绑定,而属性则没有动态绑定机制多态的使用细节包

t565696的博客 799

面向对象编程-中级(三)-方法重写、覆盖、多态动态绑定机制

一、方法重写/覆盖(override) 1.1 基本介绍 1.2 快速入门 public class Animal { public void cry() { System.out.println("动物叫唤.."); } } public class Dog extends Animal{ //1. 因为 Dog 是 Animal 子类 //2. Dog 的 cry 方法和 Animal 的 cry 定义形式一样(名称、返回类型、参数) //3. 这时我们就说 Dog 的 cr

太阳的博客 247

多态多态体现、instanceof、equal和==号的区别

多态:方法或对象具有多种形态,是oop的第三大特征,是建立在封装和继承之上多态具体体现:方法多态:(1)重载 (同一对象内)(2)重写(父子)对象多态:​ (1)对象的编译类型和运行类型可以不一致(父类引用指向子类)​ (2)对象的运行类型可以变化,可通过getClass()方法查看对象的运行类型​ (3)编译类型 ”=“左边,运行类型看”=“右边。

m0_63762870的博客 384

SummerVocation_Leaning--java动态绑定多态

概念: 动态绑定:在执行期间(非编译期间)判断所引用的对象的实际类型,根据实际类型调用其相应的方法。如下例程序中,根据person对象的成员变量pet所引用的不同的实际类型调用相应的方法。 具体实现好像是在java的底层机制中有一个指针会动态指向相应类。 1 class Animal{ //定义Animal基类 2 private String ...

bangxingq832885的博客 134

多态的实现技术

什么是多态? 1.继承体现多态JAVA里没有多继承,一个类之能有一个父类。而继承的表现就是多态。一个父类可以有多个子类,而在子类里可以重写父类的方法(例如方法print()),这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法print()的时候得到的结果和表现形式就不一样了,这...

supper_me的博客 558

黑马程序员_基础复习05_多态

------- android培训、java培训、期待与您交流! ----------  多态:事物之间存在多种体现形态 1、多态体现    父类引用指向子类对象,父类引用也可以接受自己的子类对象。这么做的好处是提高了程序的扩展性,但是使用多态的前提是存在继承或实现。 下面的代码是父类引用接收子类对象: class Cycle{    private String name;

妞妞超人☆❤的专栏 244

从底层理解Java中方法的调用与多态

方法调用与多态 在《Java核心技术卷一》一书中,对方法调用有着比较明确的阐述。书中写道,假设要调用x.f(args),隐式参数x声明为类C的一个对象,调用过程的详细描述: 编译器查看对象的声明类型和方法名,编译器一一列举所有C类中名为f的方法以及其超类中访问属性为public且名为f的方法 编译器查看调用方法提供的参数类型,然后找到最恰当的一个f方法,例如调用x.f(“Hello”),编译器将...

qq_38557194的博客 314

B站 韩顺平 笔记 (Day 10)

多态 --> 向上(下)转型 ---> 动态绑定机制

happilyaaa的博客 1123

Java基础知识-多态的实现机制

面向对象设计具备三种特性:封装、继承、多态 多态是面对对象程序设计中代码重用的一个重要机制,它表示当同一个操作作用在不同的对象的时候,会出现不同的语义,从而会产生不同的结果。比如:同样是“+”操作,3+4用来实现整数的相加,而“3”+“4”却实现了字符串的连接。在Java语言中,多态主要有以下两种表现方式: (1)重载(Overload) 重载是指同一个类中有多个同名的方法,但这些方法有着不同的参数,因此可以在编译的时候就确定到底调用哪个方法,它是一种编译时多态。重载可以被看作一个类中的方法的多态性。 (2

qq_46249770的博客 621

非零基础自学Java (老师:韩顺平) 第8章 面向对象编程(中级部分) 8.11 面向对象编程 - 多态

非零基础自学Java (老师:韩顺平) 第8章 面向对象编程(中级部分) 8.11 面向对象编程 - 多态

代码改变世界 431

Java基础 8.11

多态是面向对象编程的三大特征之一,指方法或对象具有多种形态。具体体现包括方法多态(重载、重写)和对象多态(编译类型与运行类型可以不一致)。Java动态绑定机制指:调用方法时与对象的运行类型绑定,而属性调用则遵循声明位置,没有动态绑定。通过getClass()可查看对象运行类型,编译类型由定义时确定,运行类型可变化。

anlogic的博客 213

多态的简单理解

多态性的优点包括:灵活性:通过多态性,我们可以编写灵活的代码,可以在运行时通过指向不同对象的相同父类引用,实现不同的行为。可扩展性:通过继承和多态性,我们可以轻松地添加新的子类,并通过父类引用来访问这些子类对象的共同行为。可维护性:多态性使得代码结构更清晰,更易于理解和维护。通过将共同行为定义在父类中,可以避免代码的重复和冗余。总之,多态性是面向对象编程中的一种重要特性,它实现了代码的灵活性和可扩展性。通过将相同接口或抽象类作为父类引用,可以支持不同的子类对象具有不同的行为。

m0_73449789的博客 91
上一篇: 二进制、八进制、十进制、十六进制带小数的转换
YOUKA_A
博客等级 码龄7年 7粉丝 · 14原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值