重载和重写的区别

1、重载和重写的区别?

1>首先要回答这个问题,我们应该先了解为何要引入方法的重载,方法重载最有代表性的就是构造器了,我们知道,构造器是和类名一致的方法,但我们要用不同的方法来初始化对象时,由于原有的构造器太过单一,不能满足我们的要求,这时就需要方法重载。

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

重载的特征:

(1)方法名必须相同;
(2) 方法的参数列表一定不一样;
(3)访问修饰符和返回值类型可以相同也可以不同。
 其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。

2>重写(override):一般都是表示子类和父类之间的关系,主要特征:方法名相同,参数相同,但具体的实现不同。

重写的特征:

 (1)方法名必须相同,返回值类型必须相同
 (2)参数列表必须相同
 (3)访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
 (4)子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
 (5)构造方法不能被重写.
### Java 中方法重载与方法重写区别 #### 方法重载 (Overloading) 方法重载是指在一个类中定义多个同名但参数不同的方法。这些差异可以体现在参数的数量不同、参数类型的顺序不同等方面。需要注意的是,方法的返回类型并不影响是否构成重载。 ```java class Calculator { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } } ``` 上述例子展示了 `add` 方法的不同版本,它们具有相同的名称但是接受不同类型或数量的参数[^3]。 #### 方法重写 (Overriding) 当子类提供了一个与其父类中存在的某个声明完全一致的方法时,则认为该子类覆盖了这个来自超类的方法。这意味着两个方法应该有同样的签名(即相同的名字、参数列表以及返回值),并且子类中的访问控制符不应更严格于父类中的相应成员。 ```java class Animal { public void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override public void sound() { super.sound(); // 调用父类的方法 System.out.println("Dog barks"); } } ``` 在这个案例里,`Dog` 类通过继承自 `Animal` 并实现了自己的 `sound()` 函数来展示如何正确地执行方法重写操作[^1]。 另外值得注意的一点是,在Java中如果想要在子类里面既调用自己的实现也能够访问到父类中原有的行为的话可以通过关键字 `super` 来完成这一目标[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值