方法重载和方法重写

方法重载(overload)

方法名相同,但参数不同(类型不同,个数不同)。

只有返回值不同不构成方法重载。

只有形参的名称不同,不构成方法重载。

方法重写(override)

在子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。

重写【add==>add(只能改变方法体逻辑)】发生在继承(父类)和实现(接口)中…发生在二个以上的类中

重载【add==>add(一定改变参数(类型,个数),也可以改变方法体)】…发生在一个类中

方法重写与方法重载的区别

方法重写

概念:子类继承父类中的方法,想在原有的基础上作一定的修改。

格式特点:

1.方法名、参数列表必须完全一致

2.返回类型可以相同,也可以不同,不同必须是原来返回类型的子类型

2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)

3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

方法重载

概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

格式特点:

1.方法名相同。

2.方法的参数表必须不同

如果参数个数不同,就不考虑它的参数类型

如果参数个数相同,那么参数的类型必须不同。

3.方法的返回类型、修饰符可以相同,也可不同。

子类从父类继承分成两种:

1.方法的继承:

方法的继承,父类直接把自己的方法转移到子类中去,当然前提是父类的方法修饰符的访问范围是子类可以访问的范围,但是如果子类已经重写了父类的方法,这时候这个方法就不能重父类转移到子类中。

2.成员变量的继承 :

成员变量就会有点奇妙了,它不会从父类转移到子类,而是保留在父类中,这就会出现,子类和父类可能同时拥有两个相同名字的变量。

方法重载方法重写是面向对象编程中的两个重要概念,它们有以下几个区别: 1. 参数列表不同:方法重载是指在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。而方法重写是指子类重新定义了父类中已有的方法,具有相同的名称参数列表。 2. 返回类型不同:方法重载与返回类型无关,只要参数列表不同即可。而方法重写要求子类的返回类型必须与父类的返回类型相同或兼容。 3. 访问修饰符不同:方法重载可以具有不同的访问修饰符,包括public、protected、defaultprivate。而方法重写要求子类的访问修饰符必须大于或等于父类的访问修饰符。 4. 关键字不同:方法重载没有关键字限制,只要参数列表不同即可。而方法重写使用关键字"override"来标识子类对父类方法重写。 5. 功能不同:方法重载是为了提供多个功能相似但参数不同的方法,以便满足不同的需求。而方法重写是为了在子类中重新定义父类的方法,以实现多态性特定的功能需求。 综上所述,方法重载方法重写在参数列表、返回类型、访问修饰符、关键字功能等方面存在明显的区别。 #### 引用[.reference_title] - *1* *2* *3* [重载重写的区别](https://blog.youkuaiyun.com/lucylily11/article/details/121777776)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值