Herencia (Inheritance)
Herencias nos permite expandir nuestras clases a otras el cual son clases descendientes o hijos. Las clases padres pueden pasar a otras clases descendientes propiedades y métodos públicos como protegidas, no privada.
#include <iostream>
using namespace std;
class Person {
protected:
string firstName;
string lastName;
public:
Person(
string _firstName,
string _lastName
) {
this->firstName = _firstName;
this->lastName = _lastName;
}
string getFirstName() {
return firstName;
}
string getLastName() {
return lastName;
}
};
class Customer: public Person {
private:
static int lastId;
int id;
string email;
public:
Customer(
int _id,
string _email,
string _firstName,
string _lastName
) : Person(
_firstName,
_lastName
) {
if(_id == 0) {
lastId++;
this->id = lastId;
}
else {
this->id = _id;
if(_id > lastId) {
lastId = _id;
}
}
this->email = _email;
this->firstName = _firstName;
this->lastName = _lastName;
}
static int getLastId() {
return lastId;
}
int getId() {
return this->id;
}
string getEmail() {
return this->email;
}
void setEmail(string _email) {
this->email = _email;
}
};
int Customer::lastId = 0;
int main()
{
Customer customer1(3, "[email protected]", "John", "Doe");
Person person1("Steven", "Prito");
cout << "Customer id: " << customer1.getId() << endl;
cout << "Customer id: " << customer1.getFirstName() << endl;
Customer customer2(0, "[email protected]", "Mary", "Poppins");
cout << "Customer id: " << customer2.getId() << endl;
cout << "Customer id: " << customer2.getLastName() << endl;
Customer customer3(7, "[email protected]", "James", "Doe");
cout << "Customer id: " << customer3.getId() << endl;
cout << "Customer id: " << customer3.getEmail() << endl;
cout << "Person name: " << person1.getFirstName() << endl;
return 0;
}
//-> Customer id: 3
//-> Customer id: John
//-> Customer id: 4
//-> Customer id: Poppins
//-> Customer id: 7
//-> Customer id: [email protected]
//-> Person name: Steven