方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
Overload(重载、过载)
定义:
如果在同一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。
特点:
1、每个重载的方法都必须有一个独一无二的参数类型列表(即,不同的参数类型,不同的参数个数,不同的参数顺序),当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int)。
2、不能通过访问权限、返回类型、抛出的异常进行重载。
3、重载方法存在于同类中。
示例:
package test;
public class Overloading {
public void f(int i, String s) {
System.out.println("初始定义方法:f(int,String)");
}
public void f(char c, double d) {
System.out.println("方法重载1:不同的参数类型。");
}
public void f(int i) {
System.out.println("方法重载2:不同的参数个数。");
}
public void f(String s, int i) {
System.out.println("方法重载3:不同的参数顺序");
}
}
Override(重写、覆盖)
定义:
如果子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
特点:
1、子类和父类中的方法名、参数、返回值都必须相同。
2、子类方法不能缩小父类方法的访问权限,如不能用private覆盖public方法。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、如果某一方法在父类中的权限是private,那么子类并没有对其重写,只是定义了一个新方法。
5、父类方法被定义为final不能被重写。
6、存在于父类和子类之间,若子类的方法名和父类相同,要么是重写(覆盖),要么是重载,要么就错误。
示例:
package test;
public class Father{
public void say(String s) {
System.out.println("father say()");
}
}
package test;
public class Son extends Father{
public void say(String s) {
super.say(s); //super调用父类方法
System.out.println("son say()");
}
public static void main(String args[]) {
Son s = new Son();
s.say("say what?");
}
}
///output:
father say()
son say()
重构
定义:
在软件工程中,尽量不改变接口的前提下,进行修改bug,提高效率,增加新功能等工作,从而调整软件结构,改进代码质量,使代码更易维护、阅读等等。。
特点:
1、可以通过重写或重载实现。
2、可以更改注释、更改函数名、类名等。
总结:
重构(refactor):发生在软件工程中,调整软件结构,改进代码质量,使代码更易维护、阅读等。
重写(override):java多台在父类与子类(即类与类)之间的体现,让子类覆盖父类的相同方法。
重载(overload):java多态性在个类中(即一个类)的体现,让相同方法接受不同参数,实现不同功能。
分享到:
相关推荐
Java中的方法重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的方式,但有着本质的区别。 1. **方法重载(Overloading)**: 方法重载是指在同一个类中可以有多个同名方法,但这些方法的...
在面向对象编程中,尤其是在Java语言中,`Overload`(重载)和`Override`(重写)是两个非常重要的概念,它们帮助开发者更好地组织代码并提高代码的复用性和灵活性。 #### 二、Overload(重载) **定义**: - `...
在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 #### 一、Override(方法重写) *...
根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...
Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...
在PHP编程语言中,`overload` 和 `override` 是两个关键的概念,它们涉及到类的继承和多态性。理解这两个概念对于编写可扩展和灵活的代码至关重要。 **重写 (Override)** 重写(Override)是面向对象编程中一个...
Override Overload Overwrite 马克-to-win Java视频
本文将重点解析标题与描述中提及的一些关键知识点,包括final、finally、finalize的区别,以及HashMap与Hashtable、Collection与Collections、Overload与Override等概念的不同之处。 ### final、finally、finalize ...
Java 编程语言中有两个重要的概念:重写(Override)和重载(Overload)。这两个概念经常被混淆,但它们具有不同的作用和特点。本文将详细地介绍 Java 中的重写和重载,帮助读者理解它们之间的区别和应用场景。 一...
本资源主要涵盖Java面试题的基础知识和集合原理,涵盖Object-Oriented Programming(OOP)相关知识点,包括多态(Polymorphism)、方法Overload和Override、等于运算符(==)和equals()方法的使用、final、finally...
重载(Overload)和覆盖(Override)是面向对象编程中的两个重要概念,它们在PHP和Java等编程语言中有着不同的应用和规则。 **重载(Overload)** 重载通常发生在同一类内部,指的是可以有多个同名方法,但这些方法的...
在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...
包括Java面试题目、多线程编程、通信编程、数据库查询、异常处理机制、事件机制、多形与继承、抽象类与接口、String与StringBuffer的区别、final、finally的区别、Collection和Collections的区别、GC(垃圾收集器)...
在编程语言中,"override" 和 "重载"(overload)是两个常见的概念,它们都与函数或方法的行为有关,但具体含义和使用场景不同。理解这两个概念对于编写多态性和灵活性的代码至关重要。 首先,我们来谈谈“重载”...
JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...
- Java中重载(Overload)和重写(Override)的区别,以及返回值类型的相关规则; - Java中构造器能否被重写(override); - Java中接口和抽象类的相关特性,以及它们之间的区别; - Java中实现多态的机制; - Java中异常...
函数的使用、short 型变量的赋值、sleep() 和 wait() 的区别、数组和 String 的 length 属性、Overload 和 Override 的区别等。 final、finally、finalize 在 Java 中,final、finally、finalize 三个关键字经常被...