重载与重写的区别

转载 2016年05月31日 20:07:17
重写与重载的区别
方法重载,就是在一个类中有好几个方法,它们的方法名都一样,但参数不一样,返回的值也可以一样。
java的重写,是指在子类中对父类的某方法进行重新定义,其子类的该方法名以及参数位置和个数均与父类相同,从而在调用子类的该方法时,不会执行父类的方法.如果在父类中以final定义的方法,在子类中无法重写.
重写的主要优点是能够定义某个子类特有的特征:
如:
public class Father
{
public void speak()
{
System.out.println("Father");
}
}
public class Son extends Father
{
public void speak()
{
System.out.println("son");
}
}
这也叫做多态性,重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法,

当上例中 Father类 speak()方法被private时,Son类不能重写 Father类 speak()方法,此时Son类 speak()方法相当与在Son类中定义的一个speak()方法.
Father类 speak()方法一但被final时,无论该方法被public,protected及默认所修饰时,Son类根本不能重写 Father类 speak()方法,试图编译代码时,编译器会报错.例:
public class Father
{
fianl public void speak()
{
System.out.println("Father");
}
}
public class Son extends Father
{
public void speak()
{
System.out.println("son");
}
}//编译器会报错.

Father类 speak()方法被时默认修饰时,只能在同一包中,被其子类被重些,如果不在同一包则不能重写.
Father类 speak()方法被时protoeted时,不仅在同一包中,被其子类被重些,还可以不同包的子类重写.

重写方法的规则:
1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如,
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常.

而重载的规则:
1.必须具有不同的参数列表;
2.可以有不同的返回类型,只要参数列表不同就可以了;
3.可以有不同的访问修饰符;
4.可以抛出不同的异常;

重写和重载的区别在于:

重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值.

用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般

java中重载与重写的区别

  • 2013年09月10日 15:58
  • 24KB
  • 下载

java中方法重载和重写的区别和定义

重载:一个类中有一个方法A,你又在这个类中创建了一个方法B,方法B的名字和A一样,返回值类型也一样,但是参数的类型或个数不同,此时B重载了A。 例如: public class TestClass{ ...

死亡笔记1---java语言的四大特性以及方法重载 方法重写的区别以及new创建对象所用到的知识点

一 :开发:其实就是找对象使用,没有对象就创建一个对象.. 找对象--(建立对象)-使用对象,维护对象的关系 java语言的第一特性:封装 什么是封装? public class User { ...

java重载与重写的区别+重写父类equals方法的完美实现

【0】README0.1) 本文章节【1】和【2】的内容转自 http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html ; ...

方法的重载与重写的关系(区别);static关键字;单例设计模式;继承;

方法的参数传递(值传递   引用传递)         基本数据类型:值传递:当参数类型为基本数据类型的时候  传递的是值 出了方法  原有值不改变 引用数据类型:引用传递:当参数类型为引用数据类...
  • KY1996
  • KY1996
  • 2017年07月19日 23:48
  • 225

java中重载和重写的区别

首先我们来讲讲:重载(Overloading)     (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overlo...
  • CillyB
  • CillyB
  • 2016年07月07日 11:12
  • 423

java中重载与重写的区别

java中重载与重写的区别   首先我们来讲讲:重载(Overloading)     (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型...

Java中重载和重写的区别

Java中重载和重写的区别 重载 overloading 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载是一个类中...

【VB.NET】——方法重载和方法重写的区别

前言         第一次接触到这个问题的时候还是在看C#视频的时候,当时并不是对比出现的这个问题,再一次就是同学问的我,因为在学习时就感觉这两个问题区分的挺清楚的,有什么好争议的呢,当时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重载与重写的区别
举报原因:
原因补充:

(最多只允许输入30个字)