方法的重载和重写

方法的重载和重写



前言

方法的重载和重写需要大家掌握 ,在笔试面试的时候可能问到。我在自己的理解上做了一下总结,希望可以帮助大家


一、方法的重载(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");
	}
  1. .不能构成重载举例
	 
 	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.返回值类型可以不同吗
对于返回值类型是基本数据类型来说,不可以

对于返回值类型是引用数据类型来说,重写之后的返回值类型更小是可以的

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

  • 13
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不断前进的皮卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值