什么是重载方法,什么是覆盖方法,主要区别
重载方法:在Java中,有函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
覆盖方法:覆盖又称重写,在Java中,是子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。
两者的区别:
1、子类与父类的关系不同:覆盖方法中的子类与父类之间是垂直关系;在重载方法中因为两个方法在同一个类中,所以是不同方法之间的水平关系。
2、映射关系不同:覆盖只能由一个方法,或只能由一对方法产生关系;在重载方法时,多个方法之间发生变化。
3、对于参数列表的需求不同:覆盖要求参数列表相同;重载要求参数列表不同。
4、调用类型不同:在覆盖方法过程中,调用的方法体,决定于对象的类型(对象对应存储空间类型);而在重载方法中,选择调用的方法体要参照调用时的实参表和形参表来进行选择。
扩展资料:
重载方法的规范:
1、方法名一定要相同。
2、方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
3、方法的返回类型、修饰符可以相同,也可不同。
覆盖方法的规范:
1、两同原则:同方法名、同参数表
2、子类中的覆盖方法不能使用比父类中被覆盖的方法更严格的访问权限。
3、如需使用父类中原有的方法,可使用super关键字,该关键字引用了当前类父类的方法。
参考资料来源:百度百科-方法覆盖
参考资料来源:百度百科-方法重载
一、重载方法:方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。
调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法
二、覆盖方法:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
两者的区别:
1、子类与父类的关系不同:覆盖方法中的子类与父类之间是垂直关系;在重载方法中因为两个方法在同一个类中,所以是不同方法之间的水平关系。
2、映射关系不同:覆盖只能由一个方法,或只能由一对方法产生关系;在重载方法时,多个方法之间发生变化。
3、对于参数列表的需求不同:覆盖要求参数列表相同;重载要求参数列表不同。
扩展资料:
java的特点:
1、高性能
Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU的机器代码,也就是实现全编译了。
Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
2、多线索性
Java是多线索语言,它提供支持多线索的执行,能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。
Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由C.A.R.Haore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。
3、动态性
Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。
参考资料来源:
覆盖:子类继承父类而且这是必须的。在子类里面重新定义这个方法。
重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
静态类是static的 不需要new对象就可以访问类中的方法
非静态类 必须要new对象 然后才能访问类中的方法
重载方法是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
覆盖方法又称方法覆盖。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。
两者的区别:
1、调用类型不同:
在覆盖方法过程中,调用的方法体,决定于对象的类型(对象对应存储空间类型);而在重载方法中,选择调用的方法体要参照调用时的实参表和形参表来进行选择。
2、映射关系不同:
覆盖只能由一个方法,或只能由一对方法产生关系;在重载方法时,多个方法之间发生变化。
扩展资料:
覆盖方法的注意事项:
1、两同原则:同方法名、同参数表。
2、子类中的覆盖方法不能使用比父类中被覆盖的方法更严格的访问权限。
3、如需使用父类中原有的方法,可使用super关键字,该关键字引用了当前类父类的方法。覆盖实际上是父子类之间的关系。当父类有个方法为a()时,继承它的这个子类也有个方法为a()这就叫覆盖。
重载方法的具体规范:
1、方法名一定要相同。
2、方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
3、方法的返回类型、修饰符可以相同,也可不同。
参考资料来源:百度百科--方法重载
参考资料来源:百度百科--方法覆盖