java面向对象(3):重载和重写是什么?怎么区分?

文章详细阐述了Java编程中方法的重载和重写。方法的重载在同一类中,允许有相同名称但参数列表不同的方法,方便根据需求调用。而方法的重写发生在继承关系中,子类可以重新定义父类中相同名称和参数列表的方法,以满足特定需求。重载关注的是参数列表,而重写则涉及返回值和访问修饰符。两者在概念和使用上有明确的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、方法的重载

1、什么是重载?

同一个类中,方法名相同,参数列表不同【顺序、个数、类型】
与返回值类型和访问修饰符无关

2、为什么要有方法的重载

方便根据我们的不同需求去调用不同的参数类型的方法

如下代码块所示:就是方法的重载

//方法一
public int cal(int a,int b){
	int result=a*b;
	return result;
}
//方法二
public int cal(int a, int b, int c){
	int result=a*b*c;
	return result;
}

3、怎么用

只要满足定义即可,做到方法名一样,参数列表不一样,与返回值和访问修饰符无关。

其中参数列表可以是数据类型不一样,参数的个数不一样或者参数的顺序不一样都算作参数列表不一样

如下代码块所示:
方法名一样都是sum
参数列表不一样:个数一样,但是数据类型不一样
所以满足方法的重载的条件

	public void sum(int a,int b){
        int sum=a+b;
        System.out.println("sum:"+sum);
    }
    public int sum(int a,String b){
      int c=b.equals("hhh")?1:2;
      int sum=c+a;
        return sum;
    }

二、方法的重写

1、什么是方法的重写

产生在继承关系中

就是方法名一样,参数列表一样
返回值一样或者是其子类
访问修饰符不能严于父类

(private最严格,缺省default默认情况其次,protected次之,public最不严格,范围最广)


如下代码块所示:方法的重写
方法名一样:show
参数列表一样:个数一样、类型一样都是String、顺序也一样
返回值类型一样
子类访问修饰符是public没有严于父类private

如父类A:

class A{
	private void show(String info){
	}
}

子类B继承了A:

class B extends A{
	public void  show(String a)
}

2、为什么要有方法的重写

父类的方法不能满足我们的需要,所以要对父类的方法进行重写

(至于为什么要重写父类方法,而不是进行自己重新写一个方法,我想装修房子,跟推翻了重新建哪个更省事不必多说了吧)

3、怎么用

按照定义要求去重写父类方法

注:重写之后,执行的是子类的方法

三、重载和重写的关系

两者没有任何关系

一个是同一个类中,一个是两个类,继承关系中
只是称呼上都是重而已

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值