Java overload和override的区别分析

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

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

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);
}
}

相关文章

  • nacos注册中心单节点ap架构源码解析(最新推荐)

    nacos注册中心单节点ap架构源码解析(最新推荐)

    这篇文章主要介绍了nacos注册中心单节点ap架构源码解析,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Spring使用AOP完成统一结果封装实例demo

    Spring使用AOP完成统一结果封装实例demo

    这篇文章主要介绍了Spring使用AOP完成统一结果封装,本文通过实现demo给大家详细讲解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Java中闭包简单代码示例

    Java中闭包简单代码示例

    这篇文章主要介绍了Java中闭包简单代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Springboot使用put、delete请求报错405的处理

    Springboot使用put、delete请求报错405的处理

    这篇文章主要介绍了Springboot使用put、delete请求报错405的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java调用dll方法总结

    java调用dll方法总结

    本篇文章小编给大家整理了java调用dll的方法的总结,有需要的朋友参考学下一下吧。
    2017-12-12
  • Java8的Lambda表达式你真的会吗

    Java8的Lambda表达式你真的会吗

    这篇文章主要介绍了Java8的Lambda表达式你真的会吗,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 基于@RequestMapping 用法详解之地址映射

    基于@RequestMapping 用法详解之地址映射

    这篇文章主要介绍了@RequestMapping 用法详解之地址映射,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springmvc 传递和接收数组参数的实例

    springmvc 传递和接收数组参数的实例

    下面小编就为大家分享一篇springmvc 传递和接收数组参数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • java多线程编程之Synchronized块同步方法

    java多线程编程之Synchronized块同步方法

    这篇文章主要介绍了java多线程编程之Synchronized块同步方法,synchronized关键字又称同步锁,当方法执行完后,会自动释放锁锁,只有一个线程能进入此方法,看看下文中各种例子对synchronized的详细解释
    2015-12-12
  • SpringBoot整合Dubbo+Zookeeper实现RPC调用

    SpringBoot整合Dubbo+Zookeeper实现RPC调用

    这篇文章主要给大家介绍了Spring Boot整合Dubbo+Zookeeper实现RPC调用的步骤详解,文中有详细的代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-07-07

最新评论