标题:
java中方法覆盖与方法重载
方法重载(overload)
方法重载中要求满足一下几点:
-
覆盖与被覆盖的两个方法名必须相同
-
形参列表不同
1.形参数据类型不同
2.形参个数不同
3.形参顺序不同
(以上满足一点即为形参列表不同) -
与返回值类型,访问修饰符, 异常 没关系
方法覆盖(override)
方法覆盖相对方法重载语法更为严格
并且是需要在父子类的基本框架上实现的
即在子类中定义和父类形同的方法
方法覆盖需要满足一下几点:
- 子类的方法名,形参列表,返回值类型都要与父类相同
- 子类的访问修饰符需要与父类相同或者比父类更
方法覆盖的应用场景:
- 父类中提供的方法,不足以满足子类的 功能需求时,
子类可以根据自身功能重写此方法。
方法覆盖的注意事项
-
如果子类定义了方法名、形参列表和父类相同;
但是返回值和父类 不同,不能构成方法的覆盖,编译报错。 -
如果子类定义方法名相同、但是形参列表不同的方法,
编译通过,运行也通过,但此语法是方法的重载。
(如果是抽象方法便必须进行方法的覆盖)
访问修饰符的分析:
| private(私有) | default(默认) | protected(受保护的) | public(公开的) | |
|---|---|---|---|---|
| 访问范围 | 本类可以访问 | 本类,同包(子类,非子类) | 本类,同包(子类非子类),不同包子类 | 同包,不同包 |
| 子类可否继承 | 不能 | 同包子类可以 | 子类一定可以 | 子类一定可以 |
以上修饰符从私有到公开即为从严到宽
子类继承时必须遵守访问修饰符从严到宽的原则
最后注意overload(方法重载)与override(方法覆盖)的英文写法 防止造成混淆
本文详细解析了Java中的方法覆盖与方法重载的区别,包括语法要求、应用场景及注意事项。方法覆盖需在子类中定义与父类相同的方法名、参数列表和返回类型,而方法重载则是在同一类中定义多个同名但参数列表不同的方法。
604

被折叠的 条评论
为什么被折叠?



