方法的重载和重写

简介: 方法的重载和重写

方法的重载和重写

@TOC


# 前言 方法的重载和重写需要大家掌握 ,在笔试面试的时候可能问到。我在自己的理解上做了一下总结,希望可以帮助大家
# 一、方法的重载(Overload) ## 1.为什么要使用方法重载 ``` 一些功能相似的方法可以写成同样的方法名 ​功能不同的时候,尽可能让方法名不同。 ``` ## 2.满足方法重载的条件 1.在同一个类中 2.方法名相同 3.形参列表不同(个数,类型,顺序) 4.方法的重载和返回值类型无关,和权限修饰符也无关 ## 3.举例说明 1.方法重载举例 以下的方法都构成重载 ```java 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"); } ``` 2. .不能构成重载举例 ```java 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.方法重写的条件 条件一:两个类要有继承关系 条件二:重写后的方法和之前的方法具有: 相同的返回值类型 相同的方法名 相同的形参列表 条件三:重写的方法的访问权限不能更低 条件四:重写之后的方法抛出的异常类型不能大于父类抛出的异常类型 ​ ​ 方法重写的举例 ```java 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.返回值类型可以不同吗 对于返回值类型是基本数据类型来说,不可以 对于返回值类型是引用数据类型来说,重写之后的返回值类型更小是可以的 ```` ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/98ad3706b7824029b10e6eb5c124ae49.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeiPnOm4n-eahOWtpuS5oOS5i-i3rw==,size_13,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/0b388bc16c0f44cdadcf62d663ecbfc5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeiPnOm4n-eahOWtpuS5oOS5i-i3rw==,size_15,color_FFFFFF,t_70,g_se,x_16) # 总结 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/f4000b97fef14dcc8494a56eaaae4025.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeeahOWtpuS5oOS5i-i3rw==,size_19,color_FFFFFF,t_70,g_se,x_16)
相关文章
|
2月前
|
Java 编译器
重载和重写的区别是什么?
重载和重写的区别是什么?
|
2月前
|
Java
方法的重载
方法的重载
21 1
|
19天前
|
Java
重载与重写的区别
重载与重写的区别
16 5
|
18天前
|
Java
重载和重写区别
重载和重写区别
15 2
|
2月前
重载和重写的区别
重载和重写的区别
15 0
|
12月前
重载和重写有什么区别?
重载和重写有什么区别?
51 0
|
12月前
|
C++
C++重载、重写、重定义
C++重载、重写、重定义
75 0
|
8月前
|
C++
54 C++ - 重写 重载 重定义
54 C++ - 重写 重载 重定义
21 0
|
11月前
|
Java
方法的重写
方法的重写
37 0
|
12月前
|
C#