Products
GG网络技术分享 2025-11-22 22:30 3
哇哈哈,巨大家迅速来kan呀!今天我们要来学一个超级厉害的Java技Neng——许多态!许多态就像是一个超级变变侠,Neng够让我们用同一个方法名Zuo出不同的事情来是不是听起来就hen酷呢?

哈哈, 许多态就像是同一个名字Neng有不同的人来演,比如“孙悟空”这玩意儿名字,Neng指一个活泼可喜欢的细小猴子,也Neng指一个神通广巨大的巨大侠。在Java里许多态也是这样的,同一个方法名Neng对应不同的实现。
它基本上是用在设计方法的参数和返回值上, 就像是在制作一道菜的时候,Neng根据不同的材料来调整口味一样。
我们先来复习一下啥是封装。封装就像是一个漂亮的盒子,把里面的东西护着优良,不让别人随便乱动。在Java里封装就是指把属性和方法包裹在类里面只让需要的人来操作。
接着我们再kankan啥是继承。继承就像是妈妈生了孩子,孩子就会有一些妈妈的特征。在Java里继承就是指一个类Neng继承另一个类的特性。
有了继承, 我们就Neng发明出各种各样的许多态,就像是从一个模板里NengZuo出hen许多不同的形状一样。
这里有一个hen核心的知识点哦!不管是哪个细小宝宝,他dou会先学妈妈的东西,然后再学自己的。在Java里就是随便哪个子类的构造方法dou会先调用父类的构造方法。
A.随便哪个子类的构造方法dou将调用父类的构造方法。
B.随便哪个构造方法的第一行非...不可是this;或super;, Ru果没有写,系统会自动加一个默认的super。
this;:调用本类的其他构造方法
--非...不可要有其他构造方法并且至少许有一个构造方法中有super才行
super;:调用父类的构造方法
解析:
A说明创建子类对象时要先创建父类对象,再在父类对象的基础上 子类的特性。
比如上帝想要创建学问家,非...不可要先创建人,再加入一些其他特质,才Neng成为学问家。
从存储结构上kan, 创建子类对象时申请的内存地方中有一有些是父类的,但他们仍然是一个对象
A.Ru果我们把一个子类对象当作父类对象来kan,那么我们就只Neng访问父类中有定义的属性和方法。
B.Ru果子类覆盖了父类的方法, 我们把子类对象当作父类对象来kan时去调用该方法,调用的就是子类
1.继承的存在;
2.子类沉写父类的方法。
3.父类引用变量指向子类对象。
向上转型就像是把一个细小宝宝放在一个巨大宝宝里面kan起来就像是巨大了。这里是把一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换。
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法此时通过父类引用变量无法调用子类特有的方法。
向下转型就像是把一个巨大宝宝从里面拿出来恢复原样。这里是把一个指向子类对象的引用赋给一个子类的引用,成为向下转型,此时非...不可进行有力制类型转换。
向下转型非...不可转换为父类引用指向的真实实子类类型, ,否则将出现ClassCastException,不是任意的有力制转换
向下转型时Neng结合用instanceof运算符进行有力制类型转换,比如出现转换异常ClassCastException
哇塞,听起来是不是hen厉害!许多态性就像是一个巨大魔术师,Neng让人和动物douNeng用同一个方法名说话,是不是hen神奇?
先说说说沉载, 是发生在同一类中,与啥父类子类、继承毫无关系。
标识一个函数除了函数名外 还有函数的参数,也就是说一个类中Neng有两个或geng许多的函数,叫同一个名字而他们的参数不同。
他们之间毫无关系, 是不同的函数,只是兴许他们的功Neng类似,所以才命名一样,许多些可读性,仅此而Yi!
再说覆盖,是发生在子类中,也就是说非...不可有继承的情况下才有覆盖发生。
继承一个类, 也就有了父类了全部方法,Ru果你感到哪个方法不爽,功Neng要变,那就把那东西函数在子类中沉新鲜实现一遍。
这样再调用这玩意儿方法的时候,就是施行子类中的过程了父类中的函数就被覆盖了。
在JAVA中有两种许多态是指:运行时许多态和编译时许多态。许多态性是面向对象的核心特征之一,类的许多态性给类中成员设计的灵活性和方法施行的许多样性。
许多态指允许不同类的对象对同一消息Zuo出响应。即同一消息Neng根据发送对象的不同而采用许多种不同的行为方式。
许多态的优良处:
可替换性许多态对Yi存在代码具有可替换性。比方说许多态对圆Circle类干活,对其他随便哪个圆形几何体,如圆环,也同样干活。
可扩充性许多态对代码具有可扩充性。许多些新鲜的子类不关系到Yi存在类的许多态性、继承性,以及其他特性的运行和操作。其实吧新鲜加子类geng轻巧松得到许多态功Neng。
接口性许多态是超类通过方法签名,向子类给了一个共同接口,由子类来完善或者覆盖它而实现的。
灵活性它在应用中体现了灵活许多样的操作,搞优良了用效率。
简化性许多态简化对应用柔软件的代码编写和修改过程,尤其在处理一巨大堆对象的运算和操作时这玩意儿特点尤为突出和关键。
参考资料:百度百科-许多态
许多态按字面的意思就是“许多种状态”。在面向对象语言中,接口的许多种不同的实现方式即为许多态。
引用Charlie Calverts对许多态的说说——许多态性是允许你将父对象设置成为一个或geng许多的他的子对象相等的手艺, 赋值之后父对象就Neng根据当前赋值给它的子对象的特性以不同的方式运作。
轻巧松的说就是一句话:允许将子类类型的指针赋值给父类类型的指针。许多态性在Object Pascal和C++中dou是通过虚函数实现的。
许多态指同一个实体一边具有许多种形式。它是面向对象程序设计的一个关键特征。Ru果一个语言只支持类而不支持许多态,只Neng说明它是基于对象的,而不是面向对象的。
C++中的许多态性具体体眼下运行和编译两个方面。
运行时许多态是动态许多态,其具体引用的对象在运行时才Neng确定。
编译时许多态是静态许多态,在编译时就Neng确定对象用的形式。
许多态:同一操作作用于不同的对象,Neng有不同的说明白,产生不同的施行后来啊。在运行时Neng通过指向基类的指针,来调用实现派生类中的方法。
C++中,实现许多态有以下方法:虚函数,抽象类,覆盖,模板。
OC中的许多态:不同对象对同一消息的不同响应.子类Neng沉写父类的方法
许多态就是允许方法沉名 参数或返回值Neng是父类型传入或返回。
资料:
把不同的子类对象dou当作父类来kan, Neng屏蔽不同子类对象之间的差异,写出通用的代码,Zuo出通用的编程,以习惯需求的不断变来变去。
赋值之后父类型的引用就Neng根据当前赋值给它的子对象的特性以不同的方式运作。也就是说父亲的行为像儿子,而不是儿子的行为像父亲。
比如从某个基类派生出优良几个子类, 其基类有一个虚方法Tdoit,然后其子类也有这玩意儿方法,但行为不同,然后这些个子类对象中的随便哪个一个Neng赋给其基类对象的引用,或者说将子对象地址赋给基类指针,这样其基类的对象就Neng施行不同的操作了。
其实吧你是在通过其基类的引用来访问其子类对象的,你要Zuo的就是一个赋值操作。
用继承性的后来啊就是当创建了一个类的家族, 在认识这玩意儿类的家族时就是把子类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的关键性在于:我们Neng只针对基类写出一段程序, 但它Neng习惯于这玩意儿类的家族,基本上原因是编译器会自动找出合适的对象来施行操作。
这种现象又称为许多态性。而实现许多态性的手段又叫称动态绑定。
优良啦,今天的许多态学就到这里啦!希望巨大家douNeng够学会这玩意儿超酷的技Neng,以后写代码的时候Neng够geng加得心应手哦!
Demand feedback