Java中overload和override的区别

   方法重载(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);

    }

    }

   方法重载(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);

    }

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章