精华内容
参与话题
问答
  • 重载和重写区别

    千次阅读 多人点赞 2018-11-05 20:46:43
    Java重载和重写区别 重载(overload): 方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同; 重写(override): 方法重写是存在子父类之间的,子类定义...
    Java重载和重写区别

    重载(overload):
    方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同;
    重写(override):
    方法重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型;
    需要注意的是,被final修饰的方法不能重写;抽象类和接口的方法必须要重写。

    重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
    面试题:重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

    答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
    重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。
    重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

    展开全文
  • 简述重载重写区别

    千次阅读 2017-12-12 23:29:46
    重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数、类型、顺序。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的...

    重载(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

     

    重写与重载的区别在于:

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

     

    展开全文
  • JAVA重写和重载区别

    万次阅读 多人点赞 2018-07-11 22:04:05
    问: Java 重载重写是什么?有什么区别? 答:  重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回...

    问: Java 重载与重写是什么?有什么区别?

    答:
      重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。

    图1. Android类中的一个重载例子

    重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法则可使用 super 关键字。

    图2. Android类中的常见的一个重写例子
    ----------

    **重载规则:**必须具有不同的参数列表; 可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。

    重写规则:参数列表必须完全与被重写的方法相同,否则不能称其为重写;返回类型必须一直与被重写的方法相同,否则不能称其为重写;访问修饰符的限制一定要大于等于被重写方法的访问修饰符;重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常,譬如父类方法声明了一个检查异常 IOException,在重写这个方法时就不能抛出 Exception,只能抛出 IOException 的子类异常,可以抛出非检查异常。

    重载与重写是 Java 多态性的不同表现。
      重写是父类与子类之间多态性的表现,在运行时起作用(动态多态性,譬如实现动态绑定)
      而重载是一个类中多态性的表现,在编译时起作用(静态多态性,譬如实现静态绑定)。


    问:Java 构造方法能否被重写和重载?

    答:
      重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以 Java 的构造方法不能被重写的。而重载是针对同一个的,所以构造方法可以被重载

    问:下面程序的运行结果是什么,为什么?

    public class Demo {
        
    public boolean equals( Demo other) {
            System.out.println("use Demo equals." );
            return true;    
    }
        
    public static void main(String[] args) {    
        Object o1 =new Demo ();
        Object o2 =new Demo ();        
        Demo o3 =new Demo ();
        Demo o4 =new Demo ();
    
       if (o1.equals(o2)) {
                System.out.println("o1 is equal with o2.");
            }
    
       if(o3.equals(o4)) {             
                System.out.println("o3 is equal with o4.");
            }
        }
    }
    

    答:上面程序的运行结果如下。

    use Demo equals.
    o3 is equal with o4.
    

    因为 Demo 类中的 public boolean equals(Demo other) 方法并没有重写 Object 类中的 public boolean equals(Object obj) 方法,原因是其违背了参数规则,其中一个是 Demo 类型而另一个是 Object 类型,因此这两个方法是重载关系(发生在编译时)而不是重写关系;故当调用 o1.equals(o2) 时,o2 是 Object 类型参数,实际上调用了 Object 类中的 public boolean equals(Object obj) 方法,因为在编译时 o1 和 o2 都是 Object 类型,而Object 类的 equals 方法是通过比较内存地址才返回 false;当调用 o3.equals(o4) 时,实际上调用了 Demo 类中的 equals(Demo other) 方法,因为在编译时 o3 和 o4 都是 Demo 类型的,所以才有上面的打印。

    展开全文
  • 【面试题】重载和重写区别

    万次阅读 多人点赞 2018-08-27 09:25:39
    重载和重写(覆盖)的特点 Overload 特点 Override 特点 总结 overload(重载) override(重写重载(Overloading) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有...

    目录

    重载(Overloading)

    重载的规则

    重写方法的规则

    重载和重写(覆盖)的特点

    Overload 特点

    Override 特点

    总结

    overload(重载)

    override(重写)


    重载(Overloading)

    方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。

    Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

    调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

    重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回值类型作为重载函数的区分标准

    父类方法被默认修饰时,只能在同一包中,被其子类重写,如果不在同一包则不能重写。

    父类的方法被protoeted时,不仅在同一包中,被其子类重写,还可以不同包的子类重写。

    重载的规则

    1. 必须具有不同的参数列表;
    2. 可以有不同的返回类型,只要参数列表不同就可以了;
    3. 可以有不同的访问修饰符;
    4. 可以抛出不同的异常;

    重写方法的规则

    1. 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载
    2. 返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
    3. 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    4. 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

    重载和重写(覆盖)的特点

    Overload 特点

    1. 在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
    2. 不能通过访问权限、返回类型、抛出的异常进行重载;
    3. 方法的异常类型和数目不会对重载造成影响;
    4. 对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

    Override 特点

    1. 覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
    2. 覆盖的方法的返回值必须和被覆盖的方法的返回一致;
    3. 覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
    4. 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

    总结

    overload(重载)

    1. 参数类型、个数、顺序至少有一个不相同。
    2. 不能重载只有返回值不同的方法名。
    3. 存在于父类和子类、同类中。

    override(重写)

    1. 方法名、参数、返回值相同。
    2. 子类方法不能缩小父类方法的访问权限。
    3. 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
    4. 存在于父类和子类之间。
    5. 方法被定义为final不能被重写。
    展开全文
  • 重载重写区别

    万次阅读 多人点赞 2017-02-15 17:45:11
    重载(Overloading)  方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。  Java的方法重载,就是在类中...
  • Java—重写重载区别

    万次阅读 多人点赞 2018-06-03 18:22:24
    Java—重写重载区别 这几周开始看Java的知识,发现有一个有趣的现象就是,前两天刚看过的知识点,过一天又忘掉了。而且很多东西堆在脑子里像浆糊一样。所以边学习边总结是很重要的,今天想写一篇关于重写和重载...
  • 重写重载区别

    2020-11-23 00:11:06
    重载和重写区别 重载就是同样的⼀个⽅法能够根据输⼊数据的不同,做出不同的处理 重写就是当⼦类继承⾃⽗类的相同⽅法,输⼊数据⼀样,但要做出有别于⽗类的响应时,你就要覆盖⽗类⽅法 重载 发⽣在同⼀个类中,...
  • java中重载重写区别

    万次阅读 多人点赞 2019-04-30 13:23:21
    重写(Overriding) 重载(Overloading) 类的数量 父子类、接口与实现类 本类 方法名称 一致 一致 参数列表 ...
  • 重载重写区别

    2020-11-14 18:42:13
    1.重写(Override) 从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,...
  • 1 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virtual关键字可有可无 2 重写(覆盖)是指派生类函数覆盖基类函数,特征是: a 不同的范围,分别位于基类派生类中 b...
  • java重载和重写区别

    2018-01-07 11:42:43
    1.什么是重载? 在一个类的内部,如果存在多个方法,且方法的有相同的名字,不同的参数,便会产生重载。 它通过检测实参形参的类型数量是否匹配进行查找适配的方法,进而调用,如果找不到合适的方法。就会出现...
  • 重载和重写区别

    2019-05-19 23:09:10
    重载和重写区别 二者在定义方面的区别 关于这个方面,许多博文说我比我详细,我在这里只做一个简述。 方法重载(Overloading):在一个类中,如果两个方法的方法名相同,参数列表不同,那么这个方法就被定义为方法...
  • Java的重载和重写区别(面试常见)

    千次阅读 2015-06-30 11:49:50
    今天在看C#的基础知识,同是面向对象的语言,看到重载和重写,我突然想了半天,有点模糊了,马上度娘一番,回想起自己在北京实习的项目,实际上,开发中经常用到重载和重写,自己不去总结罢了。今天找了一份比较好的...
  • 重载 是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。 #include<bits/stdc++.h> using namespace std; ...
  • 浅说c#重载和重写区别

    千次阅读 2018-08-06 16:29:32
    主要就是overloadoverwrite吧,两种还是比较好区别的,含义弄懂后,一般就是下边几项不一样: 1. 所处位置不同,重载在同类中,重写在父子类; 2. 定义方式不同,重载方法名相同,参数列表不同,重写方法名...
  • 在学习Java时,我们在一开始总会纠结于重载重写区别在哪里,即使在指导这两个方法的具体用处之后都有时会对他们两个方法名称混淆。
  • c#中的重载和重写区别

    万次阅读 2009-08-22 19:03:00
    重载的条件: 1.必须在同一个类中2.方法名必须相同3.参数列表不能相同。 重写的条件: 1. 在不同的类中 2. 发生方法重写的两个方法返回值,方法名,参数列表必须完全一致 3. 子类抛出的异常不能超过父类相应的...
  • 重载和重写,这是两个新概念,是两个令我们容易混淆的概念。 1.重载(overloading method) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。重载是让类以统一的方式处理不同类型数据的...
  • c#中重载重写区别

    千次阅读 2018-09-13 15:47:35
    今天来看一下,编码过程中经常遇到的重载重写区别。 1、重载在同类中:重写在父子类中进行 2、定义的方式不同:重载定义是方法名相同,里面的参数不同;重写是方法名参数都相同 3、调用的方式不同: 重载...
  • java 方法的重载重写总结 1.方法重载(overload):同一个类中方法之间的关系。这里要弄清楚如何区别是两个方法签名是否同一个方法的签名。方法签名的区分规则:方法签名的区分是以方法的参数类型、排序与个数为...

空空如也

1 2 3 4 5 ... 20
收藏数 142,792
精华内容 57,116
关键字:

重载和重写的区别