C++ 覆盖方法与重载方法

覆盖方法(overriding)

什么是类函数的覆盖方法:
覆盖方法用于同一函数的重写派生类函数覆盖基类同名函数
覆盖方法重写(覆盖)了一个方法,以实现不同的功能.一般是用于子类在继承父类时,重写(重新实现)父类中的方法

覆盖方法的特征:

范围不同(分别位于 基类 和 派生类中)
函数名字相同
函数参数相同
基类函数必须有virtual(虚函数)关键字

为什么需要覆盖方法:
在 C++ 里,当我们需要在 基类里提供一个通用的函数,但是在它的某个子类里,需要修改这个方法(通用函数)的实现,就要用到覆盖方法
当父类中的某些方法不能满足要求时,子类中改写父类的方法

注意:
1.重写方法的 参数列表(方法名称,参数列表,返回类型)必须完全与被重写的方法相同否则不能称其为覆盖而是 重载
2.重写方法的 访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)
3.重写的方法的返回值必须和被重写的方法的返回一致
3.被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写
5.静态方法不能被重写为非静态的方法(会编译出错)


覆盖方法例程

#include <iostream>
#include <string>

using namespace std;

//todo覆盖方法

class Animal
{
   
public:
		Animal(string name);
		void eat();//基类中的eat()方法 因为monkey和turtle都具有eat的功能 所有选择此方法为被覆盖重写的通用方法
		void sleep();
		void run();
protected:
		string thename;
};

class Monkey :public Animal//todo建立一个继承自Animal基类的子类Monkey
{
   
	public:
		Monkey(string name);
		void climb();
		
		void eat();//todo再一次声明基类中的通用函数eat() 
		//注意: 重写方法的参数列表必须完全与被重写的方法相同 否则不能称其为 覆盖 而是 重载
		//			重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)
		//			重写的方法的返回值必须和被重写的方法的返回一致
		//			被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写
		//			静态方法不能被重写为非静态的方法(会编译出错)

};


class Turtle :public Animal
{
   
public:
	Turtle(string name
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值