广

Java编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Java overload和override的区别分析

    2018-11-02 13:12:17 次阅读 稿源:互联网
    零七广告
    方法的重写(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);
    }
    }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告