方法的重载和重写
【摘要】 方法的重载和重写 @TOC 前言 方法的重载和重写需要大家掌握 ,在笔试面试的时候可能问到。我在自己的理解上做了一下总结,希望可以帮助大家 一、方法的重载(Overload) 1.为什么要使用方法重载一些功能相似的方法可以写成同样的方法名 功能不同的时候,尽可能让方法名不同。 2.满足方法重载的条件 1.在同一个类中 2.方法名相同 ...
方法的重载和重写
@TOC
前言
方法的重载和重写需要大家掌握 ,在笔试面试的时候可能问到。我在自己的理解上做了一下总结,希望可以帮助大家
一、方法的重载(Overload)
1.为什么要使用方法重载
一些功能相似的方法可以写成同样的方法名
功能不同的时候,尽可能让方法名不同。
2.满足方法重载的条件
1.在同一个类中
2.方法名相同
3.形参列表不同(个数,类型,顺序)
4.方法的重载和返回值类型无关,和权限修饰符也无关
3.举例说明
1.方法重载举例
以下的方法都构成重载
public void getSum(int i,int j){
System.out.println("1");
}
public void getSum(double d1,double d2){
System.out.println("2");
}
public void getSum(String s ,int i){
System.out.println("3");
}
public void getSum(int i,String s){
System.out.println("4");
}
- .不能构成重载举例
public int getSum(int i,int j){
return 0;
}
public void getSum(int m,int n){
}
private void getSum(int i,int j){
}
二、方法的重写(Override)
1.什么时候考虑方法的重写
子类继承父类以后,继承过来的方法不能满足子类当前的业务需求,子类有权利对这个方法进行重新编写,有必要进行方法的覆盖2.方法重写的条件
条件一:两个类要有继承关系
条件二:重写后的方法和之前的方法具有:
相同的返回值类型
相同的方法名
相同的形参列表
条件三:重写的方法的访问权限不能更低
条件四:重写之后的方法抛出的异常类型不能大于父类抛出的异常类型
方法重写的举例
class Circle{
public double findArea(){}//求面积
}
class Cylinder extends Circle{
public double findArea(){}//求表面积
}
***************
class Account{
public boolean withdraw(double amt){}
}
class CheckAccount extends Account{
public boolean withdraw(double amt){}
}
3.注意事项
①方法覆盖只是针对方法,和属性无关
②私有方法不能覆盖
③构造方法不能被继承,所有构造方法也不能被覆盖
④方法覆盖只是针对实例方法,静态方法覆盖没有意义
接下来是我的一些理解
1.方法的覆盖要和多态机制联合在一起才有意义
多态和对象有关系
而静态和对象没有关系
一般情况下,不探讨静态方法的覆盖,我们会说静态方法没有覆盖
没有多态机制的话,方法覆盖可有可无
如果没有多态机制,当父类的方法无法满足子类需求的时候,
我们也可以定义新的方法
2.私有方法不能覆盖在外部类无法访问私有的方法
私有方法供本类使用
可能我们在一个类当中有一些共同的操作,我们只希望让它在本类当中调用,
不希望它在外部调用,我们就可以声明为私有的方法
3.返回值类型可以不同吗
对于返回值类型是基本数据类型来说,不可以
对于返回值类型是引用数据类型来说,重写之后的返回值类型更小是可以的
总结
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)