区分多态和重载

多态是基于对抽象方法的覆盖来实现的,用统一的对外接口来完成不同的功能。重载也是用统一的对外接口
来完成不同的功能。那么两者有什么区别呢?
重载,是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表
,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期
就绑定了。
多态:是指子类重新定义父类的虚方法(virtual,abstract)。当子类重新定义了父类的虚方法后,父类根据
赋给它的不同的子类,动态调用属于子类的该方法,这样的方法调用在编译期间是无法确定的。
不难看出,两者的区别在于编译器何时去寻找所要调用的具体方法,对于重载而言,在方法调用之前,编译
器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;而对于多态,只有等到方法调用的那一刻
,编译器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。

时间: 2024-11-03 22:23:38

区分多态和重载的相关文章

[转]Java中继承、多态、重载和重写介绍

什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果

Java多态特性:重载和覆写的比较

Java重载: 在同一个类中 方法具有相同的名字,相同或不同的返回值,但参数不同的多个方法(参数个数或参数类型) public class MethoDemo{ public static void main(String args[]){ int one = add(10,20) ; // 调用整型的加法操作 float two = add(10.3f,13.3f) ; // 调用浮点数的加法操作 int three = add(10,20,30) ; // 调用有三个参数的加法操作 Syst

SQL封装、多态与重载

面向对象1.类:众多对象抽象出来的2.对象:类实例化出来的 3.类的定义关键字 class 4.类里面包含成员变量成员属性 成员方法 5.面向对象三大特性(1)封装目的:保护类,让类更加安全.做法:让类里面的成员变量变为私有的,做相应的方法或者属性去间接的操作成员变量 封装成员方法来间接操作类里面的成员变量使用成员属性来间接访问类里面的成员变量 访问修饰符private 私有的 只能在该类中访问protected 受保护的 只能在该类和它的子类中访问public 公有的 在任何地方都可以访问 构

多态,重载,重写

override是重写(覆盖)了一个方法,以实现不同的功能.一般是用于子类在继承父类时,重写(重新实现)父类中的方法.重写(覆盖)的规则: 1.重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2.重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private). 3.重写的方法的返回值必须和被重写的方法的返回一致: 4.重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类: 5.被重写

C#中多态、重载、重写区别分析

本文实例总结了C#中多态.重载与重写的概念与区别.对于初学C#的朋友来说有不错的参考价值.分享给大家供大家参考.具体分析如下: 重写 : 是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override . 格式如下: 1.在基类中: public virtual void myMethod() { } 2.在子类中: public override void myMethod() { } 重写以后,用基类对象和子类对象访问myMethod()方法,结果都是

多态与重载

多态和重载 一:多态 1:定义:多态是指同样的消息被不同类型的对象接收时导致的不同行为. 消息是指对类的成员函数的调用.不同行为是指不同的实现,即调用了不同的函数. 2:多态的类型: 1:专用多态 : ? 1:重载多态 ? 2:强制多态 2:通用多态: ? 3:包含多态 ? 4:参数多态 3:多态的实现:编译时的多态和运行时的多态 两者分别在编译过程中和运行过程中进行确定操作对象. 这种确定操作的具体对象又被称为绑定,即将一个的方法和一条消息进行结合的过程. 静态绑定:绑定工作在编译连接阶段完成

C++多态与重载

多态与重载 重载:有两个或多个函数名相同的函数,但是函数的形参列表不同,在调用相同函数名的函数时,根据形参列表确定到底该调用哪一个函数. 多态:同样的消息被不同类型的对象接收时导致不同的行为. 多态性的特点: 重载多态:普通函数以及类的成员函数的重载,以及运算符重载都是实例. 强制多态:将变量的类型加以变化,以符合函数或者操作的要求. 包含多态:类族中定义与不同类中的同名成员函数的多态行为. 参数多态:在使用时必须赋予实际的类型才可以实例化. --------------------------

Java 多态,重载,重写

1.多态(polymorphism): 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.这就是多态性.多态性增强了软件的灵活性和扩展性. 简单来说:发送消息给某个对象,让该对象自行决定响应何种行为. 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用. 多态须具备: a. 基类 和各个子类 b. 基

Java基础:多态(重载和重写)

(1)域与静态方法 记住"只有普通方法的调用是多态的". 而域和静态方法不是:对于域的访问,在编译期间就已经进行解析和绑定了.而如果某个方法是静态的,就不具备多态性. (2)编写构造器有一条准则: * 用尽可能简单的方法使得对象进入正常状态,尽量避免调用其他方法. * 构造器内能够安全调用的方法只有那些final方法(private默认final),因为他们无法被覆盖. (3)多态概念: 多态是指一个程序中同名的不同方法共存的情况. 这些方法同名的原因是它们的最终功能和目的都相同,但是