精华内容
下载资源
问答
  • 2022-03-07 08:24:20

    1. 重载(Overload)

    在一个类中,同名的方法如果有不同的参数列表(参数类型不同,参数个数不同,参数顺序不同)即视为重载,重载对返回值类型没有要求,可以相同也可以不同,所以不能通过返回值类型是否相同来判断是否重载。

    总结:

    1. 重载是一个类中多态性的一种表现。
    2. 重载要求方法名必须相同,参数列表必须不同(参数类型不同,参数个数不同,参数顺序不同)。
    3. 重载的时候,返回值类型可以相同也可以不同,所以无法通过返回值类型是否相同来判断是否重载。

    2. 重写(Override)

    重写就是子类把父类本身的方法重写一遍,子类继承父类中原有的方法,但有时子类并不想原封不动的继承父类的某个方法,所以在方法名,参数列表相同的情况下,对方法体重写,重写遵循两同两小一大原则,方法名相同,参数列表相同,子类返回类型小于等于父类方法返回类型(必须在有继承关系的前提下进行比较),子类抛出异常小于等于父类方法抛出异常,子类访问权限大于等于父类方法访问权限。

    总结:

    1. 发生在子类和父类之间

    2. 两同两小一大原则:
      两同:方法名相同,参数列表相同

      两小: 子类返回类型小于等于父类方法返回类型,子类抛出异常小于等于父类方法抛出异常

      一大:子类访问权限大于等于父类方法访问权限

    面试题:重载和重写的区别

    回答:方法的重载和重写都是实现多态的方式,前者实现在编译时的多态性,后者实现在运行时的多态性,重载发生在一个类中,要求方法名必须相同,参数类型必须不同,包括参数列表,参数个数甚至参数顺序不同,返回值类型是否相同不作为判断是否重载的标准。重写是发生在子类和父类之间,重写要求子类被重写方法和父类被重写方法有相同的方法名和参数列表,子类返回值类型小于等于父类方法返回值类型,子类抛出异常小于等于父类方法抛出异常,子类访问权限大于等于父类方法访问权限。

    更多相关内容
  • 前段时间,刚学完C#,其中重载重写傻傻分不清楚。如今通过查阅资料对这两者有了一个大概的理解,不足之处还请多多指教。 二、定义  重载:在同一定义域内(比如一个类里面)。方法名相同,参数个数、次序、类型...
  • 本文主要介绍Java 的重载和重写,学习java的同学都知道Java的多态有多重要,这里给大家举例说明函数的重载和重写,希望能帮助有需要的小伙伴
  • 主要介绍了Java方法重载和重写原理区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 重载和重写区别

    2022-02-16 17:52:09
    重载是在同一个类中的具有相同方法名,不同参数(个数,类型,顺序)的方法的定义,构造方法...重写是在子类继承父类的方法重写,在子类重写的方法必须父类方法完全相同,可以用@override检查是否是重写方法 ...


    重载和重写的区别
     


    一、重载

    重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

    每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

    最常用的地方就是构造方法的重载。

    重载是在同一个类中的具有相同方法名,不同参数(个数,类型,顺序)的方法的定义,
    构造方法普通方法,抽象方法都可以重载;重写是在子类继承父类的时候重写,
    在子类重写的方法必须和父类方法完全相同,可以用@override检查是否是重写方法

    重载规则:

    • 被重载的方法必须改变参数列表(参数个数,类型或顺序不一样);
    • 被重载的方法可以改变返回类型;
    • 被重载的方法可以改变访问修饰符;
    • 被重载的方法可以声明新的或更广的检查异常;
    • 方法能够在同一个类中或者在一个子类中被重载。
    • 无法以返回值类型作为重载函数的区分标准。

    二、重写

    重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

    重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

    重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。

    在面向对象原则里,重写意味着可以重写任何现有方法


    三、重载与重写的区别

    区别点重载方法重写方法
    参数列表必须修改一定不能修改
    返回类型可以修改一定不能修改

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

    • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
    • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
    • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
    展开全文
  • 主要介绍了C#中多态、重载重写区别,采用实例较为通俗易懂的分析了多态、重载的重写的概念与用法,对于C#初学者有非常不错的借鉴价值,需要的朋友可以参考下
  • 重载和重写区别

    2021-12-18 15:33:15
    3. 重载和重写区别 重载和重写是一个特别好理解的概念,这里说一个通俗的解答方式 重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。 ...

    以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答建议收藏,经常温习查阅


    3. 重载和重写区别

    重载和重写是一个特别好理解的概念,这里说一个通俗的解答方式

    重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。

    1. 方法名必须相同
    2. 方法的参数列表一定不一样。
    3. 访问修饰符和返回值类型可以相同也可以不同。

    其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。

    public class JavaPubTest {
        public void out(){
            System.out.println("参数"+null);
        }
        //参数数目不同
        public void out(Integer n){
            System.out.println("参数"+n.getClass().getName());
        }
     
        //参数类型不同
        public void out(String string){
            System.out.println("参数"+string.getClass().getName());
        }
     
        public void out(Integer n ,String string){
            System.out.println("参数"+n.getClass().getName()+","+string.getClass().getName());
        }
        //参数顺序不同
        public void out(String string,Integer n){
            System.out.println("参数"+string.getClass().getName()+","+n.getClass().getName());
        }
        
        public static void main(String[] args) {
            JavaPubTest javaPubTest = new JavaPubTest();
            javaPubTest.out();
            javaPubTest.out(1);
            javaPubTest.out("string");
            javaPubTest.out(1,"string");
            javaPubTest.out("string",1);
        }
    }
    

    **重写(Overriding)**发生在父类子类之间,比如所有类都是继承与Object类的,Object类中本身就有equals、hashcode、toString方法等。在任意子类中定义了重名和同样的参数列表就构成方法重写。

    1. 方法名必须相同,返回值类型必须相同。
    2. 参数列表必须相同。
    3. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
    4. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
    5. 构造方法不能被重写。

    10道不得不会的Java基础面试题

    https://javapub.blog.csdn.net/article/details/122011870

    手机随时看:微信搜【JavaPub】 JavaPub

    查看更多面试题及答案
    wx

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

    什么是重载?

    方法名相同,参数类型、数量、顺序不同(参数的顺序不同也是重载,但是没有意义),与返回值无关。为什么不拿返回值区分重载呢?有时候我们只调用方法不在乎返回值的时候,就无法区分是否是重载了。例如

    public class Demo3 {
        public static void main(String[] args) {
            Demo3 demo3 = new Demo3();
            //此时系统也不知道你调用了哪个方法对吧!
            demo3.fun()
    
        }
        public int fun(){
            System.out.println("int类型返回值fun()");
            return 0;
        }
        //这里会报错
        public void fun(){
            System.out.println("void类型返回值fun()");
        }
    }
    

    在这里插入图片描述

    重载需要注意什么?

    重载与基本数据类型.
    基本类型可以自动从小类型转为大类型,若传入的参数类型大于方法期望接收的参数类型,你必须首先做缩窄转换,否则编译器就会报错。

    /**
     * @author sunyuan
     * @date 2022/3/16 14:00
     */
    public class Demo3 {
        public static void main(String[] args) {
            Demo3 demo3 = new Demo3();
            //默认调用fun(int x) 因为java中整数的数据类型默认是int,所以基本数据类型重载的时候需要注意一下,
            demo3.fun(1);
            byte x = 2;
            demo3.fun(x);
            //这里默认调用double 因为浮点数默认是double
            demo3.fun(2.1);
            //调用float需要 带f
            demo3.fun(2.1f);
        }
    
        public void fun(int x) {
            System.out.println("fun(int x)");
        }
    
        public void fun(byte x) {
            System.out.println("fun(byte x)");
        }
    
        public void fun(float x) {
            System.out.println("fun(float x)");
        }
    
        public void fun(double x) {
            System.out.println("fun(double x)");
        }
        
    }
    
    

    在这里插入图片描述

    为什么要有重载?

    Java的构造方法就是重载。所以很有必要重载,姑且的理解可以省很多词汇量,JDK原码这个想想不重载的话,输出字符串printlnString,输出int printlnInt ,想想多么麻烦!现在我们println的时候,调用哪个方法和我们无关,由系统决定。是不是很爽。我们只关心业务逻辑,不关心底层实现!

    在这里插入图片描述

    什么是重写?

    子类重新定义父类中已有的方法,且子类中的方法名和参数类型及个数都必须与父类保持一致!即外壳不变,核心重写!

    为什么要有重写?

    多态的体现,减少重复的代码!
    重写是不是为了增强父类的方法? 是的。和父类一样的方法骨架但是有更强的方法体 ,先不说实现,就光说架子,何为更强(可以被更多的人访问,即方法的修饰符修饰符比父类更大,但是在强大也不能忘了本呀,你的返回类型不能比父类更大呀,方法体里可以有更强的实现,但是**返回类型必须父类可控,小于父类,**抛出的异常也在父类可控范围之内,小于父类)
    总结就是:【两小一大】

    重写注意事项

    1. 子类方法的权限控制符不能变小;

    2. 子类方法返回的类型只能变小;

    3. 子类抛出异常的类型只能变小;

    4. 子类方法名必须和父类保持一致;

    5. 子类方法的参数类型和个数必须和父类保持一致。
      ----面试时间紧了解上面的就够了,但是多了解总是好的!-----

    6. 声为 final 的方法不能被重写。

    7. 声明为 static 的方法不能被重写,但是能够被再次声明。

    8. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private 和 final 的方法。

    9. 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。(8 9 总结起来就是Default只能在一个包下访问,一个包下才能重写Default方法)

    10. 构造方法不能被重写

    在这里插入图片描述
    包结构:
    在这里插入图片描述
    Parent.java

    public class Parent {
    
        public void publicFun() {
            System.out.println("父类的public方法");
        }
    
        public final void FinalFun() {
            System.out.println("父类的FianlFun方法");
        }
    
        public static void publicStaticFun() {
            System.out.println("父类的publicStatic方法");
        }
    
        protected void protectedFun() {
            System.out.println("父类的protected方法");
        }
    
        void defaultFun() {
            System.out.println("父类的default方法");
        }
    
        private void privateFun() {
            //这肯定是父类私有的,要留清白在人间,不能什么都继承呀对不对!想成父亲的小秘密
            System.out.println("父类的private方法");
        }
    }
    

    Son1(和父类同一个包下)

    package com.suny.test.chongxie;
    
    /**
     * 一个包下的儿子
     * 所有Son1可以重写的方法
     * @author sunyuan
     * @date 2022/3/18 10:40
     */
    public class Son1 extends Parent {
        @Override
        public void publicFun() {
            super.publicFun();
        }
    
        @Override
        protected void protectedFun() {
            super.protectedFun();
        }
    
        @Override
        void defaultFun() {
            super.defaultFun();
        }
    }
    
    

    Son2(和父类不同的包下)

    
    
    
    /**
     * 不是一个包下的儿子
     * 所有Son2可以重写的方法
     * @author sunyuan
     * @date 2022/3/18 10:40
     */
    public class Son2 extends Parent {
        @Override
        public void publicFun() {
            super.publicFun();
        }
    
        @Override
        protected void protectedFun() {
            super.protectedFun();
        }
    }
    

    总结起来就是:同一个包下可以重写Default方法,不同包下不可以

    参考:
    https://www.shouxicto.com/article/3007.html

    https://cloud.tencent.com/developer/article/1890110

    https://www.cnblogs.com/xwdreamer/archive/2012/04/06/2434483.html

    由于能力有限,难免有不足!
    欢迎交流指正!

    饮水思源,对您有帮助欢迎点赞评论!

    展开全文
  • 主要介绍了C++中重载重写(覆盖)隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下
  • Java的重载和重写区别(面试常见)

    千次阅读 2015-06-30 11:49:50
    今天在看C#的基础知识,同是面向对象的语言,看到重载和重写,我突然想了半天,有点模糊了,马上度娘一番,回想起自己在北京实习的项目,实际上,开发中经常用到重载和重写,自己不去总结罢了。今天找了一份比较好的...
  • 下面答案哪个是show方法的重载形式: A、void show(int a,float c,int b){} B、int show(int a,int b,float c){} C、int show(int a,float c,int b){return a;} D、int show(int a,float c){return a;} 正确...
  • 主要介绍了Java中继承、多态、重载和重写介绍,需要的朋友可以参考下
  • 重写和重载区别,面试中也会经常问到,那么具体有什么区别呢? 1:重写发生在父子类中,重载发生在同一个类中。比如有个父类,里面定义了某些方法,当在子类中继承父类时,重写父类的方法。 2:重写方法名、参数...
  • 浅说c#重载和重写区别

    千次阅读 2018-08-06 16:29:32
    主要就是overloadoverwrite吧,两种还是比较好区别的,含义弄懂后,一般就是下边几项不一样: 1. 所处位置不同,重载在同类中,重写在父子类; 2. 定义方式不同,重载方法名相同,参数列表不同,重写方法名...
  • 重载和重写,这是两个新概念,是两个令我们容易混淆的概念。方法重载(overloading method)是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。方法重写(overiding method)子类不想原封不动...
  • 首先,Objective-C中不完全支持重载,网上很多人要么将重载和重写搞混,要么说OC不支持重载(当然按照重载严格定义说OC不支持重载也没错),事实上OC支持参数个数不同的函数重载。 问题: Objective-CSwift中有...
  • 重写和重载区别是什么

    万次阅读 2021-12-26 21:16:22
    重写和重载区别是什么
  • C++中重载和重写区别

    千次阅读 2021-03-31 20:12:01
    如果面试C++工程师,重载和重写区别很频繁被问到。我建议这么简单回答即可:重载是指同名函数参数的类型,个数,顺序不同,根据参数列表决定调用哪个函数,函数的返回类型不关心。而重写是子类中实例化virtual修饰...
  • java中重载和重写区别

    千次阅读 2021-10-29 14:43:44
    1.重载 重载指在一个类中,具有多个相同名称的类,他们的参数列表却不相同 (参数类型不同、参数个数不同甚至是参数顺序不同) 重载对返回类型没有要求,可以相同也可以不同,但是不能返回类型来判断他们是否是...
  • C#重载和重写区别

    2021-05-25 14:54:08
    C#重载和重写区别 重载就是在同一个类中,方法名相同,参数列表不同。参数列表不同包括:参数的个数不同,参数类型不同等。 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无关 III....
  • C++ 重载重写及其区别

    千次阅读 2022-03-13 20:34:56
    C++ 重载重写及其区别
  • 方法的重载和重写区别

    千次阅读 2021-12-21 08:23:00
    (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型次序不同,则称为方法的重载 (Overloading)。 (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,...
  • 重载和重写区别 1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。 2.范围不同---重载是在一个类中,重写是子类与父类之间的。 3.多态不同---重载是编译时的多态性,重写是运行时的多...
  • 重载和重写

    2020-12-17 22:39:43
    重载 发生在同一个类中; 方法名必须相同; 参数类型不同、个数不同、顺序不同; 方法返回值访问修饰符可以不同。 举个例子: public class Student { private Integer id; private String name; private ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,699
精华内容 73,479
关键字:

c重载和重写的区别

友情链接: trng-master.zip