面向对象的多态性,通俗点解释一下
1个回答
展开全部
多态是类型理论的一个概念。
意思是:
一个名字可以代表许多不同的对象,只要这些对象都有共同的父类,这样这个名字代表的不同对象就可以以不同的方式来响应同一消息。
这是抽象的解释,我觉得实际上多态就是用来将接口与实现分离的。
如:
class Tuxing { //我定义一个图形类来作为接口
public:
virtual void hua() const = 0; //绘制图形
virtual void cachu() const = 0; //擦出图形
// ....
};
class Zhengfangxing {//定义正方形作为实现
public:
void hua() const {
//实现画正方形的操作
}
void cachu() const {
//实现擦除正方形的操作
}
//实现其他接口
};
class Sanjiaoxing {//定义Sanjiaoxing作为实现
public:
void hua() const {
//实现绘制三角形的操作
}
void cachu() const {
//实现擦出三角形的操作
}
//实现其他操作
};
我的用户代码想使用这些图形,因为TuXing是接口,所以客户只需使用TuXing就行了!
//useTuxing函数使用户代码
void useTuxing(Tuxing *use) {
//use这个名字可以代表正方形,三角形等对象,
//这些对象都有一个共同的父类Tuxing
//这样这个名字代表的不同对象就可以以不同的方式
//实现同一消息
use->draw();
//....
use->cachu();
}
int main() {
Zhengfangxing one;
useTuxing(&one);
Sanjiaoxing two;
useTuxing(&two);
}
就是这样将接口与实现分离。我建议你买一些国外的书看看吧!
有问题加我扣
意思是:
一个名字可以代表许多不同的对象,只要这些对象都有共同的父类,这样这个名字代表的不同对象就可以以不同的方式来响应同一消息。
这是抽象的解释,我觉得实际上多态就是用来将接口与实现分离的。
如:
class Tuxing { //我定义一个图形类来作为接口
public:
virtual void hua() const = 0; //绘制图形
virtual void cachu() const = 0; //擦出图形
// ....
};
class Zhengfangxing {//定义正方形作为实现
public:
void hua() const {
//实现画正方形的操作
}
void cachu() const {
//实现擦除正方形的操作
}
//实现其他接口
};
class Sanjiaoxing {//定义Sanjiaoxing作为实现
public:
void hua() const {
//实现绘制三角形的操作
}
void cachu() const {
//实现擦出三角形的操作
}
//实现其他操作
};
我的用户代码想使用这些图形,因为TuXing是接口,所以客户只需使用TuXing就行了!
//useTuxing函数使用户代码
void useTuxing(Tuxing *use) {
//use这个名字可以代表正方形,三角形等对象,
//这些对象都有一个共同的父类Tuxing
//这样这个名字代表的不同对象就可以以不同的方式
//实现同一消息
use->draw();
//....
use->cachu();
}
int main() {
Zhengfangxing one;
useTuxing(&one);
Sanjiaoxing two;
useTuxing(&two);
}
就是这样将接口与实现分离。我建议你买一些国外的书看看吧!
有问题加我扣
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询