简述重载与重写的区别

来源:互联网 发布:sql 不等于空字符串 编辑:程序博客网 时间:2024/05/17 18:25

重载(Overloading)

1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数类型、顺序

2Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义,与参数名和返回值类型无关

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法

例子

    public class Person {

         public Person()

         {

                this.base();

         }

         public void base() {

                System.out.println("byebye!");

         }

        public void base(String a,double b){

                System.out.println("haha!");

         }

         public static void main(String[] args)

         {

                Person per = new Person();

                per.bark(); 

                per.bark("女", "红");

 }


 重写(Overriding

1)在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。

但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。

如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

3)子类函数的访问修饰权限不能父类更加严格。

 例子:

    public class Haha

    {

       public void test(int a)

        {

            System.out.print(a);

        }

        void test(byte b)

        {

            System.out.print(b);

        }

    }

    public class Test extends Base

    {

        void test(int a)

        {

            a++;

            System.out.println(a);

        }

          public static void main(String[]agrs)

        {

            Haha b=new Test();

            b.test(0)

            b.test((byte)0)

        }

    }


重写的规则:

1.重写方法只能存在于具有继承关系的类中

2、方法名,参数列表,返回值类型必须与被重写的方法相同

3、访问修饰符的限制一定要大于被重写方法的访问修饰符public>protected>default>private

 

重写与重载的区别在于:

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

 

原创粉丝点击