`
cooliufang
  • 浏览: 129871 次
社区版块
存档分类
最新评论

Java中Overload和Override的区别

    博客分类:
  • Java
阅读更多
方法的重写(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 overload和override的区别分析

    Java中的方法重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的方式,但有着本质的区别。 1. **方法重载(Overloading)**: 方法重载是指在同一个类中可以有多个同名方法,但这些方法的...

    overload and override

    在面向对象编程中,尤其是在Java语言中,`Overload`(重载)和`Override`(重写)是两个非常重要的概念,它们帮助开发者更好地组织代码并提高代码的复用性和灵活性。 #### 二、Overload(重载) **定义**: - `...

    Override-Overload

    在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 #### 一、Override(方法重写) *...

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    Java重写(Override)&重载(Overload).pdf

    Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...

    PHP中overload与override的区别

    在PHP编程语言中,`overload` 和 `override` 是两个关键的概念,它们涉及到类的继承和多态性。理解这两个概念对于编写可扩展和灵活的代码至关重要。 **重写 (Override)** 重写(Override)是面向对象编程中一个...

    Override,Overload,Overwrite的区别---马克-to-win Java视频

    Override Overload Overwrite 马克-to-win Java视频

    java中相似概念的区别

    本文将重点解析标题与描述中提及的一些关键知识点,包括final、finally、finalize的区别,以及HashMap与Hashtable、Collection与Collections、Overload与Override等概念的不同之处。 ### final、finally、finalize ...

    Java重写(Override)与重载(Overload)区别原理解析

    Java 编程语言中有两个重要的概念:重写(Override)和重载(Overload)。这两个概念经常被混淆,但它们具有不同的作用和特点。本文将详细地介绍 Java 中的重写和重载,帮助读者理解它们之间的区别和应用场景。 一...

    Java面试题-基础+集合原理.pdf

    本资源主要涵盖Java面试题的基础知识和集合原理,涵盖Object-Oriented Programming(OOP)相关知识点,包括多态(Polymorphism)、方法Overload和Override、等于运算符(==)和equals()方法的使用、final、finally...

    PHP和JAVA中的重载(overload)和覆盖(override) 介绍

    重载(Overload)和覆盖(Override)是面向对象编程中的两个重要概念,它们在PHP和Java等编程语言中有着不同的应用和规则。 **重载(Overload)** 重载通常发生在同一类内部,指的是可以有多个同名方法,但这些方法的...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    java面试笔试题大汇总

    包括Java面试题目、多线程编程、通信编程、数据库查询、异常处理机制、事件机制、多形与继承、抽象类与接口、String与StringBuffer的区别、final、finally的区别、Collection和Collections的区别、GC(垃圾收集器)...

    override和重载的区别

    在编程语言中,"override" 和 "重载"(overload)是两个常见的概念,它们都与函数或方法的行为有关,但具体含义和使用场景不同。理解这两个概念对于编写多态性和灵活性的代码至关重要。 首先,我们来谈谈“重载”...

    JAVA中的方法重写与方法重载区别

    JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...

    Java面试宝典2017版本高清.pdf版

    - Java中重载(Overload)和重写(Override)的区别,以及返回值类型的相关规则; - Java中构造器能否被重写(override); - Java中接口和抽象类的相关特性,以及它们之间的区别; - Java中实现多态的机制; - Java中异常...

    Java基础面试题

    函数的使用、short 型变量的赋值、sleep() 和 wait() 的区别、数组和 String 的 length 属性、Overload 和 Override 的区别等。 final、finally、finalize 在 Java 中,final、finally、finalize 三个关键字经常被...

Global site tag (gtag.js) - Google Analytics