语法基础:
#include <iostream>
using namespace std;
面向抽象类编程(面向一套预先定义好的接口编程)
//解耦合 ....模块的划分
class Figure //抽象类
{
public:
//阅读一个统一的界面(接口),让子类使用,让子类必须去实现
virtual void getArea() = 0 ; //纯虚函数
protected:
private:
};
class Circle : public Figure
{
public:
Circle(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout<<"圆形的面积: "<<3.14*a*a<<endl;;
}
private:
int a;
int b;
};
class Tri : public Figure
{
public:
Tri(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout<<"三角形的面积: "<<a*b/2<<endl;;
}
private:
int a;
int b;
};
class Square : public Figure
{
public:
Square(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout<<"四边形的面积: "<<a*b<<endl;;
}
private:
int a;
int b;
};
void objplay(Figure *base)
{
base->getArea(); //会发生多态
}
void main511()
{
//Figure f; //抽象类不能被实例化
Figure *base = NULL; //抽象类不能被实例化
Circle c1(10, 20);
Tri t1(20, 30);
Square s1(50, 60);
//面向抽象类编程(面向一套预先定义好的接口编程)
objplay(&c1);
objplay(&t1);
objplay(&s1);
//c1.getArea();
cout<<"hello..."<<endl;
system("pause");
return ;
}
抽象类的实例
#include <iostream>
using namespace std;
/*
编写一个C++程序, 计算程序员( programmer )工资
1 要求能计算出初级程序员( junior_programmer ) 中级程序员 ( mid_programmer )高级程序员( adv_programmer)的工资
2 要求利用抽象类统一界面,方便程序的扩展, 比如:新增, 计算 架构师 (architect ) 的工资
*/
class programmer
{
public:
virtual void getSal() = 0;
};
class junior_programmer : public programmer
{
public:
junior_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout<<name<<" " << job << " : " << sal <<endl;
}
private:
char *name;
char *job;
int sal;
};
//zhong
class mid_programmer : public programmer
{
public:
mid_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout<<name<<" " << job << " : " << sal <<endl;
}
private:
char *name;
char *job;
int sal;
};
//adv_programmer
class adv_programmer : public programmer
{
public:
adv_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout<<name<<" " << job << " : " << sal <<endl;
}
private:
char *name;
char *job;
int sal;
};
//
class architect : public programmer
{
public:
architect(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout<<name<<" " << job << " : " << sal <<endl;
}
private:
char *name;
char *job;
int sal;
};
//计算函数 简单的框架
void CalProgSal(programmer *base)
{
base->getSal();
}
void main()
{
junior_programmer jp("小王", "初级", 4000);
mid_programmer mp("小张", "中级", 8600);
adv_programmer ap("小李", "高级", 15000);
//系统扩展
architect ar("传智高水平学员", "架构师", 24000);
CalProgSal(&jp);
CalProgSal(&mp);
CalProgSal(&ap);
CalProgSal(&ar);
cout<<"hello..."<<endl;
system("pause");
return ;
}