Java overload和override的区别分析

 我来答
百度网友8950eb8ea
2015-05-06 · TA获得超过326个赞
知道答主
回答量:73
采纳率:0%
帮助的人:36.4万
展开全部

方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载.

1.方法重载(overload)
概念:简单的说:方法重载就是类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。 
注意事项:
(1)方法名相同
(2)方法的参数类型、个数、顺序不至少有一项不同
(3)方法返回类型可以不同
(4)方法的修饰符可以不同
如果只是返回类型不一样,不能够构成重载
如果只是控制访问修饰符号不一样,也是不能构成重载的
Overloaded的方法是可以改变返回值的类型。
2.方法覆盖(override)
概念:简单的说:方法覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法。
注意事项:方法覆盖有很多条件,总的讲有两点一定要注意:
(1)子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。
(2) 子类方法不能缩小父类方法的访问权限(反过来是可以的)

 
class A{ 
public int getVal(){ 
return(5); 


class B extends A{ 
public int getVal(){ 
return(10); 


public class override { 
public static void main(String[] args) { 
B b = new B(); 
A a= (A)b;//把 b 强 制转换成A的类型 
int x=a.getVal(); 
System.out.println(x); 


Overload实例 
package com.guonan; 
//Demostrate method voerloading. 
class OverloadDemo { 
void test(){ 
System.out.println("NO parameters"); 

void test(int a){ 
System.out.println("a:"+a); 
}//end of Overload test for one integer parameter. 
void test(int a, int b){ 
System.out.println("a and b:"+a+" "+b); 

double test(double a){ 
System.out.println("double a:"+a); 
return a*a; 


class Overload{ 
public static void main(String[] args) { 
OverloadDemo ob = new OverloadDemo(); 
double result; 
ob.test(); 
ob.test(10); 
ob.test(10, 20); 
result = ob.test(123.25); 
System.out.println("Result of ob.test(123.25):"+result); 

}
截枫大爷
2015-05-06 · 超过24用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:31.6万
展开全部
重载发生在同一个类中的不同方法(方法名相同,参数类型不同)
重写是针对类间继承关系,方法相同(方法名,参数类型也相同),但是实现体不同
class A
{
public void test1(String name, int id)
{
system.out.print("重载测试方法一");
}
public void test2(double c)
{
system.out.print("重载测试方法二");
}
}

class B extends A
{
@override
public void test1(String name, int id)
{
system.out.print("我重写了A中的test1");
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yike5868
2015-05-06
知道答主
回答量:55
采纳率:0%
帮助的人:19.8万
展开全部
一城放宽遥国是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式