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

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的区别分析

    方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,想要了解更多请参考本

    overload and override

    本文详细地描述了overload 和override的区别

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

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

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

    Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的...

    PHP中overload与override的区别

    override(重写,覆盖) 1、方法名、参数、返回值相同...方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。 重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态

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

    java

    java 面试题(1)

    java 面试题(1)都是...Vector, LinkedList的存储性能和特性7. &和&&的区别8. HashMap和Hashtable的区别9. final, finally, finalize的区别10. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

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

    主要介绍了Java重写(Override)与重载(Overload)区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java就业面试题大全

    Java就业面试题大全 面向对象的特征有哪些 Overload 和Override的区别 abstract class和interface有什么区别? error和exception有什么区别?

    java面试题

    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?  方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一...

    java面试笔试题大汇总

    JAVA相关基础知识,例如:Overload和Override的区别

    java作业2

    overload和override的区别 override(重写)

    java面试题(葵花宝典)

    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

    java面试过程当中遇到的一些题目

    9. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 11 10. Final类有什么特点? 11 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 11 12. 内部类的实现方式? 12 13. 用...

    Java面试宝典

    一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto?...18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14

    核心Java面试题目汇总

    该文档汇集了Core Java的热点面试问题,包括继承、封装、多态性等核心概念,以及多线程、Overload和Override本质区别,Collection Framework等相关深入技术问题及解答。

    java面试题(面试 宝典)

    9. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 11 10. Final类有什么特点? 11 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 11 12. 内部类的实现方式? 12 13. 用...

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

    JAVA不支持操作符的重载(但是“+”实际上是一种操作符重载)。 复制代码 代码如下: <?php Class Father { public function fmeth1() { echo “fmeth1()… ”; } //public function fmeth1($str1) { // echo ...

    java面试总结

    18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类...

Global site tag (gtag.js) - Google Analytics