继承可以将每个类中公共的属性集合到一起形成一个单独的类,即为父类,并且让这些类继承父类的公共属性
子类继承父类的同时,拥有了这些成员,公共的成员只需要在父类中维护一份即可
当扩展子类时,不用再重复实现公共的方法,只需实现独有的方法
提高了代码的复用性,扩展性,灵活性
例如如下这段代码
本来的代码是每个类中都含有money属性,和cost,walk方法,但是这样重复的相同方法略显累赘,所以可以将这些公共的属性放在一个单独的类中,整合到一起,就变成了如下的形式
class People
{
public:
int money;
People(int m) :money(m) {}
void cost(int n)
{
cout << "花钱了" << endl;
money -= n;
}
void walk()
{
cout << "溜达" << endl;
}
};
class Yellow:public People
{
public:
Yellow(int m) :People(m) {}
void eat()
{
cout << "吃红烧肉了" << endl;
}
};
class White :public People
{
public:
White(int m) :People(m) {}
void eat()
{
cout << "吃汉堡了" << endl;
}
};
class Black :public People
{
public:
Black(int m) :People(m) {}
void eat()
{
cout << "吃烤肉了" << endl;
}
};
将公共属性都集合到People类中
总结
继承是面向对象编程中的一个重要概念,它允许一个类继承另一个类的特性和方法。继承有以下几个优点:
代码重用:继承允许子类重用父类的代码,避免了重复编写相同功能的代码,提高了开发效率。
统一接口:通过继承,子类可以使用父类的接口和方法,使得代码更加统一和易于理解。
扩展性:子类可以在继承的基础上进行扩展和修改,添加新的功能或改进原有的功能,从而满足不同的需求。
可维护性:继承可以将相关的代码放在一个类中,使得代码的组织更加清晰和易于维护。
多态性:继承是实现多态的基础,通过父类引用指向子类对象,可以根据实际对象的类型来调用对应的方法,增加了代码的灵活性和扩展性。
总的来说,继承可以提高代码的重用性、扩展性和可维护性,使得代码更加清晰和灵活。但需要注意的是过度使用继承可能导致类的层次结构过于复杂,增加代码的复杂度和理解难度。因此,在设计和使用继承时需要谨慎权衡利弊。