重载与重写

重载与重写

       面对重载与重写有时会像失忆一样,将这两个内容搞混。在实际运用中,我们一般是不会混的。但在给别人讲述的过程中,可能会出现张冠李戴将两个名词搞混,这是不利于传播的。让我们来一起加深一下:

重载:相同函数名称,不同参数或不同参数类型。举个例子:

class Oneclass {
	public int count(int a,int b) {		//两个正整数加法
		return a+b;
	}

	public double count(double a,double b) {		//带小数的两数相加
		return a+b;
	}

	public double count(double a,string operate,double b) {	//多位数的加减乘除运算
		switch (operate) {
			case “+”
				return a + b;
			case “-”
				return a - b;
			case “*”
				return a * b;
			case “/”
				return a / b;
		}
	}
}

这三个类的count()方法就构成了重载关系。很容易就能得出对同一对象的同名方法的调用,正是依靠这参数的不同来区分调用的是哪一个方法。

 

重写:子类对父类方法的不同实现,即方法体(函数体)执行内容不同。

//父类:Animal
class Animal{
	string food = “食物”;
	public string eat() {
		return this.food;			//父类对eat()的实现
	}
}

//子类1:Cat
class Cat extends Animal{	
	public string eat() {
		return this.food = “老鼠”;		//子类对eat()的新实现1
	}
}

//子类2:Wolf
class Wolf extends Animal{
	public string eat() {
		return this.food = “羊”;		//子类对eat()的新实现2
	}
}

正是这种重写,实现了多态。

 

       实际上,重载、重写都实现了多态。但重载是同一对象的同一函数名的不同本领;而重写则是虽然各子类对象具体相同的一个函数名,但各自因不同实现而不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值