什么是java语言的多态性(什么叫做多态在java中)

2025-04-16 00:00:01 0

什么是java语言的多态性(什么叫做多态在java中)

本文目录

什么叫做多态在java中

在JAVA中有两种多态是指:运行时多态和编译时多态。关于类的多态性简介如下: 多态(polymorphism)意为一个名字可具有多种语义.在程序设计语言中,多态性是指”一种定义,多种实现”.例如,运算符+有多种含义,究竟执行哪种运算取决于参加运算的操作数类型: 1+2 //加法运算符 “1” + “2” //字符串连接运算,操作数是字符串 多态性是面向对象的核心特征之一,类的多态性提供类中成员设计的灵活性和方法执行的多样性. 1、类多态性表现 (1)方法重载 重载表现为同一个类中方法的多态性.一个类生命多个重载方法就是为一种功能提供多种实现.编译时,根据方法实际参数的数据类型\个数和次序,决定究竟应该执行重载方法中的哪一个. (2)子类重定义从父类继承来的成员 当子类从父类继承来的成员不适合子类时,子类不能删除它们,但可以重定义它们,使弗雷成员适应子类的新需求.子类重定义父类成员,同名成员在父类与子类之间表现出多态性,父类对象引用父类成员,子类对象引用子类成员,不会产生冲突和混乱. 子类可重定义父类的同名成员变量,称子类隐藏父类成员变量.子类也可以重定义父类的同名成员方法,当子类方法的参数列表与父类方法参数列表完全相同时,称为子类方法覆盖(override)父类方法。覆盖父类方法时,子类方法的访问权限不能小于父类方法的权限。 由于Object类的equals()方法比较两个对象的引用是否相等而不是值是否相等,因此一个类要覆盖Object类的equals()方法,提供本类两个对象比较相等方法. 覆盖表现为父类与子类之间方法的多态性.java 寻找执行方法的原则是:从对象所属的类开始,寻找匹配的方法执行,如果当前类中没有匹配的方法,则逐层向上依次在父类或祖先类中寻找匹配方法,直到Object类. 2、super 引用 在子类的成员方法中,可以使用代词super引用父类成员.super引用的语法如下: super() //当子类覆盖父类成员方法时,调用父类同名成员方法 *注意:super引用没有单独使用的语法 3、多态性有两种: 1)编译时多态性 对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性. 2)运行时多态性 如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态性. 方法覆盖表现出两种多态性,当对象获得本类实例时,为编译时多态性,否则为运行时多态性,例如: XXXX x1 = new XXXX(参数列表); //对象获得本类实例,对象与其引用的实例类型一致 XXX xx1 = new XXX(参数列表); x1.toString(); //编译时多态性,执行XXX类的方法. xx1.toString(); //编译时多态性,执行XXXX类覆盖的方法. XXXX为XXX的父类. 由于子类对象既是父类对象,父类对象与子类对象之间具有赋值相容性,父类对象能够被赋值为子类对象.例如, XXXX x2 = new XXX(参数列表); //父类对象获得子类实例,子类对象即是父类对象 x2.toString(); //运行时多态 x2声明为父类对象却获得子类XXX的实例,那么x2.toString()究竟执行父类方法还是执行子类覆盖的方法呢? 这分为两种情况: 取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法; 如果没有覆盖,则执行父类方法. 在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态. 父类对象并不能执行所有的子类方法,只能执行那些父类中声明\子类覆盖的子类方法.

在java中什么叫作多态性

我自己的总结是,多态是将子类对象抽象成父类的引用。我就举一个例子吧: 现在又一个表示动物的类Animal,它还有两个子类,一个表示猫的类Cat,一个表示狗的类Dog。 Animal animal; Cat cat = new Cat(); Dog dog = new Dog(); 那么,将子类对象抽象成父类引用,就是: animal = cat;或 animal = dog; 猫和狗都是动物,所以这样的赋值是没问题的。 但是如果是cat = animal;就会编译出错,因为动物不一定是猫。 这样的抽象有什么好处呢?假设动物有一个共用的方法,叫睡觉sleep(),但是不同动物睡觉的方式不同,例如: abstract class Animal{abstract public void sleep();} class Cat extends Animal{ public void sleep(){// 猫睡觉的动作} } class Dog extends Animal{ public void sleep(){// 狗睡觉的动作} } 现在要设计一些方法,看动物是怎么睡觉的,如果每种动物对应一个方法,那么就需要这样定义: void displaySleep(Cat cat){cat.sleep();} void displaySleep(Dog dog){dog.sleep();} 但是,随着动物增多,这样的方法需要越来越多,这样的设计是不合理的。有了多态之后,就可以这样设计了: void displaySleep(Animal animal){animal.sleep();} 这样一个方法就行了,要看不同动物的睡觉动作,只要这样调用方法就可以了: displaySleep(new Cat());。

java中什么是多态性它具有什么优点

Java是面向对象的语言,多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,主要体现在继承和接口实现两方面,详见例子:继承实现多态例如:class A{method(){System.out.println(“a“);}}class B extends A{method(){System.out.println(“b“);}}class test{main(){A test = new B();test.method();//执行以后输出的是:b。解释就是:父类引用(A)指向子类对象(B),这个引用调用的是子类的方法,而不是父类A的方法;}}继承实现多态其实原理类似:interface A{method();}class B implements A{method(){System.out.println();}}class test{main(){A test = new B();test.method();//此处便会使用java的多态,B实现了A,虽然=前面是A test,但实际上生成的确是B的对象,所以调用它的方法,同继承中的父类对象指向子类对象原理相同,只是此处为继承;}}多态的好处非常明显啊,有人总结: 1.可替换性。多态对已存在的代码具有可替换性。 2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。  3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。  4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。  5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。

什么是java语言的多态性(什么叫做多态在java中)

本文编辑:admin

更多文章:


安卓虚拟机windows(如何在win10系统电脑安装安卓模拟器)

安卓虚拟机windows(如何在win10系统电脑安装安卓模拟器)

本文目录如何在win10系统电脑安装安卓模拟器win7怎样安装安卓虚拟机安卓studio虚拟机一直安装WINDOWS命令怎么在安卓系统上安装windows上用的软件,要安装什么模拟器吗安卓虚拟机可以运行win10吗安卓上windows系统模

2025年3月30日 09:50

幻灯片怎么制作流程图(wps幻灯片怎么制作流程图)

幻灯片怎么制作流程图(wps幻灯片怎么制作流程图)

本文目录wps幻灯片怎么制作流程图如何制作ppt流程图ppt怎么制作流程图 ppt流程图制作方法wps幻灯片怎么制作流程图1、新建一个PPT文档。2、在工具栏中选择“插入”,点击“smartArt”选项。3、在“smartArt”中选择“流

2025年2月9日 23:20

怎么使用cs模型教程?CS1.6如何连跳给个新手教程.

怎么使用cs模型教程?CS1.6如何连跳给个新手教程.

本文目录怎么使用cs模型教程CS1.6如何连跳给个新手教程.cs初级教程CS1.6详细教程CS跳远技巧教程求Cs1.6从菜鸟开始完全训练的教程CS各种跳跳跃方法教程怎么使用cs模型教程SourceSDK,StudioCompiler,VTF

2025年4月9日 00:40

rebirth翻译(重生的英文怎么说)

rebirth翻译(重生的英文怎么说)

本文目录重生的英文怎么说重生的英语翻译R ebirth°中文是么意思的翻译是:什么意思重生的英文怎么说重生的英文是:renascence,rebirth,reborn。renascence是名词,它的形容词是renascent,意思是新生的

2025年2月26日 16:30

viewsonic显示器怎么调亮度(优派显示器怎么调亮度)

viewsonic显示器怎么调亮度(优派显示器怎么调亮度)

本文目录优派显示器怎么调亮度优派显示器最佳设置优派vx2363怎么调节屏幕亮度优派显示器怎么调亮度你好显示器的面板上面就有auto自动调节的按键你按一下就可以了还可以进入菜单功能进去调整你的采纳是我前进的动力!记得好评和采纳,答题不易,互相

2025年4月10日 16:20

microscopy(研究微生物的重要经典技术有哪些)

microscopy(研究微生物的重要经典技术有哪些)

本文目录研究微生物的重要经典技术有哪些light microscopy 和 optical microscope 的区别研究微生物的重要经典技术有哪些微生物学的研究方法和技术有:显微技术,纯种培养技术,无菌技术,纯种分离纯化技术和微生物保藏

2025年4月9日 13:30

svn使用教程中文版(如何将svn设置在eclipse)

svn使用教程中文版(如何将svn设置在eclipse)

本文目录如何将svn设置在eclipsesvn使用方法疑惑svn命令使用方法如何将svn设置在eclipse 步骤如下:  一,安装服务器端svn和客户端svn  1, 首先安装服务器端软件“svn-1.4.5-setup.exe”(附件可

2025年3月3日 12:10

eight谐音(eight英文怎么读)

eight谐音(eight英文怎么读)

本文目录eight英文怎么读八的英语读音是什么“8”英文怎么发音eight英文怎么读一、eight的读音英    二、释义num.    八;第八;n.    八;八人(或物)一组;八人划船队;    adj.    八个的; 三、例句To

2025年3月4日 16:10

metrical(metrical and rhyme scheme 是什么意思)

metrical(metrical and rhyme scheme 是什么意思)

本文目录metrical and rhyme scheme 是什么意思英语中的metre和metres的区别metrical and rhyme scheme 是什么意思metrical adj. 韵律的, 测量的 A metr

2025年3月19日 21:30

protobuf3(怎么在c#protobuf3 反射)

protobuf3(怎么在c#protobuf3 反射)

本文目录怎么在c#protobuf3 反射protobuff 3 判断字段是否有值protobuf怎样传输复杂数据结构怎么在c#protobuf3 反射MethordInfo mi=pro.PropertyType.GetMethod(“A

2025年2月12日 00:30

停车棚帆布多少钱一个平方(钢架房要多少钱一平方)

停车棚帆布多少钱一个平方(钢架房要多少钱一平方)

本文目录钢架房要多少钱一平方膜结构停车棚一平方的造价是多少,需要哪些原材料钢架房要多少钱一平方截止时间2020年2月9日,钢架房价格一般在200-400元/平方左右。不同的地方和工艺、材质价格会有不同,钢架房价格一般在200-400元/平方

2025年3月5日 17:40

indicate名词(英语中名词有那些后缀呢)

indicate名词(英语中名词有那些后缀呢)

本文目录英语中名词有那些后缀呢indicate that后用什么时态英语中名词有那些后缀呢后缀1. 名词后缀(1) 具有某种职业或动作的人1)-an, -ain, 表示“……地方的人,精通……的人”American, historian,2

2025年4月12日 04:50

cuda核心(CUDA运算速度和显卡CUDA核心数量关系大吗)

cuda核心(CUDA运算速度和显卡CUDA核心数量关系大吗)

本文目录CUDA运算速度和显卡CUDA核心数量关系大吗CUDA是什么主要应用在什么地方cuda主要用于哪具体是什么cuda核心数量有什么用英伟达的CUDA核心CUDA运算速度和显卡CUDA核心数量关系大吗CUDA运算速度和显卡CUDA核心数

2025年3月13日 00:40

amazon是什么意思(亚马逊是是什么)

amazon是什么意思(亚马逊是是什么)

本文目录亚马逊是是什么amazon什么意思亚马逊是什么amazon是什么意思亚马逊是什么意思amazon business是什么意思亚马逊是是什么亚马逊,一般有以下几种含义:指网络电子商务公司,亚马逊公司亚马逊公司(Amazon,简称亚马逊

2025年2月18日 07:10

transition(transition 的动词形式)

transition(transition 的动词形式)

本文目录transition 的动词形式transition金融英语翻译:If you have elected to opt out of the extended transition period for complyingtrans

2025年3月4日 03:20

开发游戏学什么专业(游戏开发大学学什么专业)

开发游戏学什么专业(游戏开发大学学什么专业)

本文目录游戏开发大学学什么专业如果以后想从事游戏行业大学要学什么专业呢以后想学游戏开发要报什么专业游戏开发大学学什么专业第1个就是哈尔滨工业大学的计算机科学与技术学院。优势领域包括:智能机器人,CIMS与系统集成,智能化中文信息处理机器翻译

2025年2月10日 16:40

任务调度的概念是什么?java系统架构有哪些apache

任务调度的概念是什么?java系统架构有哪些apache

本文目录任务调度的概念是什么java系统架构有哪些apache任务调度的概念是什么概念:任务调度是操作系统的重要组成部分,而对于实时操作系统,任务调度直接影响其实时性能。任务调度方式常规可分为:可打断调度(实时系统基本功能):关键防止优先级

2025年2月22日 19:00

服务器组装配置单(想自己组装一台电脑,求一份全套清单)

服务器组装配置单(想自己组装一台电脑,求一份全套清单)

本文目录想自己组装一台电脑,求一份全套清单文件服务器电脑硬件配置怎么写电脑配置单想自己组装一台网站服务器配置,高手帮忙写配置单组装一台局域网服务器 需要一年365天开着 推荐一下配置请帮忙看看以下电脑组装机配置清单是否合适看重兼容稳定性,多

2025年4月5日 14:00

suits怎么读音(Suit怎么读)

suits怎么读音(Suit怎么读)

本文目录Suit怎么读毛衣用英语怎么读Suit怎么读一、Suit读音是英 二、Suit意思是1、n. (Suit) (美)苏特(人名)2、n. (suit) 一套衣服;一副盔甲;一套蓬帆;(非正式)高级管理人员;(一副牌中的)所有花色相同的

2025年3月19日 04:50

offsetleft和offsetwidth(如何获取页面中任意元素的offsetLeft和offsetTop)

offsetleft和offsetwidth(如何获取页面中任意元素的offsetLeft和offsetTop)

本文目录如何获取页面中任意元素的offsetLeft和offsetTopoUl.style.width和oUl.offsetWidth的区别感觉有点乱如何获取页面中任意元素的offsetLeft和offsetTop其中要注意的地方是:1、o

2025年4月5日 15:00

近期文章

screen translate(screen translate闪退)
2025-04-16 07:30:04
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:20
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:7
标签列表

热门搜索