C/C++ 学习手札(二)
2012/6/13 11:08:00 请友读忠(更多) E界MRP开发下载网 1976阅 我们研究一下继承和虚函数。 比如我们需要求正方形、长方形的周长、面积: 选择1计算长方形 选择2计算正方形 选择3退出 其他无效 我们做一个继承实现,父类矩形,子类有正方形、长方形继承矩形 C++的继承语法如下: 矩形 class Rectangle 正方形 class Square: public Rectangle 长方形 class Oblong: public Rectangle 对正方形、长方形求面积、周长。面积公式相同,在矩形父类完成,函数area();周长公式不同,在各个子类种实现。这里有一个虚函数side()。/**
* 求边长
*
/virtual int side()=0; 让函数side()=0;是在此定义,由子类实现。类似于Java的抽象父类,指定需要子类实现的方法。 矩形类:
/**
* 矩形
*
/class Rectangle {
protected:
int a; // a边
int b; // b边
public:
/**
* 求面积
*
/ int area() {
return a * b;
}
/**
* 求边长
*
/ virtual int side()=0;
};
设置了a、b两边且为protected供子类直接使用,给出了求面积的函数实现area(),同时定义了求边长的函数side(),要求函数side()由子类实现。 正方形类:
/**
* 正方形
*
/class Square: public Rectangle {
public:
/**
* 设置边
*
/ void setA(int a) {
this->a = a;
this->b = a;
}
/**
* 求边长
*
/ virtual int side() {
return 4 * a;
}
};
实现了求边长函数side(),同时加入设置边函数setA(int a)。 长方形类:
/**
* 长方形
*
/class Oblong: public Rectangle {
public:
/**
* 设置a边
*
/ void setA(int a) {
this->a = a;
}
/**
* 设置b边
*
/ void setB(int b) {
this->b = b;
}
/**
* 求边长
*
/ virtual int side() {
return 2 * a * b;
}
};
发表评论