设计模式基础1——多态练习

        面向对象有三个基本特征:封装、多态、继承。具体如下图:



From:http://www.cnitblog.com/Lily/archive/2006/02/23/6860.aspx


        学好这三个特征是掌握设计模式的前提。接下来以一个简单的C++程序为例,练习一下多态中的虚函数:

/*******************************************************/
//名称:C++多态练习(Animal)
//时间:2014年4月4日11:19:07
//作者:Lynch
/*******************************************************/

#pragma once
#include<iostream>
#include"Animal.h"
#include"Dog.h"
#include"Cat.h"
#include"Cow.h"
using namespace std;

int main()
{
	string name="Lin";
	int shoutNum=3;

	Animal *cat=new Cat();
	cat->setName(name);
	cat->setShoutNum(shoutNum);
	cout<<cat->Shout()<<endl;

	Animal *dog=new Dog();
	dog->setName(name);
	dog->setShoutNum(shoutNum);
	cout<<dog->Shout()<<endl;

	Animal *cow=new Cow();
	cow->setName(name);
	cow->setShoutNum(shoutNum);
	cout<<cow->Shout()<<endl;

	return 0;
}

#pragma once
#include<string>
using namespace std;

class Animal
{
public:
	virtual string Shout()=0;	//纯虚函数,该类不能实例化
	void setName(string name)
	{
		this->name=name;
	}
	void setShoutNum(int num)
	{
		this->shoutNum=num;
	}
protected:
	string name;
	int shoutNum;
};

#pragma once
#include "Animal.h"

class Cat :
	public Animal
{
public:

	virtual string Shout()
	{
		string str="My name is "+name+".";
		for(int i=0;i<shoutNum;i++)
		{
			str+=" MiaoMaio!";
		}
		return str;
	}
};

#pragma once
#include "Animal.h"

class Cow :
	public Animal
{
public:

	virtual string Shout()
	{
		string str="My name is "+name+".";
		for(int i=0;i<shoutNum;i++)
		{
			str+=" MangMang!";
		}
		return str;
	}
};

#pragma once
#include "Animal.h"

class Dog :
	public Animal
{
public:

	virtual string Shout()
	{
		string str="My name is "+name+".";
		for(int i=0;i<shoutNum;i++)
		{
			str+=" WangWang!";
		}
		return str;
	}
};

代码效果图:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值