为什么在有继承时使用多态?

时间:2017-04-27 08:51:31

标签: inheritance polymorphism

我有打印

的代码

radio.read()radio.write()

我并没有使用多态。我的问题是,如果只使用继承可以做到这种行为,为什么要使用多态?

#include<iostream>
using namespace std;


class port{
	public:
		
		write(){
			cout<<"prt write()";
		}
		read(){
			cout<<"port read()";
				
		}
		
		
};

class a:public virtual port{
	
	public:
		read(){
			cout<<"a read()";
		}
	
};


class b:public virtual port{
	
	public:
		write(){
			cout<<"b write()";
		}
	
};


class radio:public a,public b{
	
	public:
		write(){
			cout<<"radio write()";
		}
		read(){
			cout<<"radio read()";
				
		}
};


int main(){
	radio r=new b();
	
	
	r.read();
	r.write();
	
	
	return 0;	
}

1 个答案:

答案 0 :(得分:0)

它们并不是分开的,因为你需要继承来使用多态性。

当多个类继承自同一个基类时,会出现多态性。您可以使用它来编写使用基类(通过引用/指针)引用对象的代码,并且这些对象可以是任何派生类型。

例如,如果从类形状派生方形和圆形类,则可以编写与形状一起使用的代码,而不是专门用于派生类的代码 - 但可以通过在每个派生类中表现不同的基接口调用代码。 Shape可能有一个GetArea虚函数,Circle和Square都以不同方式实现。一些函数GetTotalArea可以遍历一组形状并在每个形状上调用GetArea。将来你可以添加一个名为Triangle的新类,GetTotalArea函数可以继续工作而不需要编辑(如果你写好了)

有时虽然你不需要多态,在那些情况下是 - 你可以使用继承而不是多态。