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

results matching ""

    No results matching ""