Herencia y derivación
Si escuchas este nombre por primera vez, primero debes pensar en el significado de estas dos palabras. Hablemos primero de herencia. Esto es similar al significado de herencia en la vida real. Por ejemplo, una persona hereda la propiedad de otra y un hijo hereda la herencia de su padre. De manera similar, en C++, por ejemplo, si hay dos clases, la nueva clase tiene todos los atributos de la clase original, lo que se llama herencia . ¡El proceso de generar una nueva clase a partir de una clase original se llama derivación ! Y llamamos a la clase original clase padre o clase base , y la clase derivada de la clase base se llama clase derivada o subclase . Todos pueden distinguir su relación por sus nombres.
Entonces, ¿cuáles son los beneficios de la herencia y la derivación? ¿Por qué C++ tiene este mecanismo?
1. Reflejar ideas de programación orientada a objetos y expresar mejor la relación entre varios tipos.
2. Además de heredar toda la información de la clase base, la clase derivada también puede agregar su propia información diferente y diferenciada. Al igual que el principio de la evolución biológica, la clase derivada se actualizará en función de tener toda la información de la clase base. clase base poderosa.
3. Los miembros heredados de la clase derivada a la clase base son de propiedad automática y oculta, es decir, no necesitamos redefinirlos. Esto ahorra una gran cantidad de código y encarna la idea de reutilización de código de la ingeniería de software.
A continuación, veamos la implementación del código real, cómo heredar e implementar clases derivadas:
/************************************//Des: Demostración del tutorial de C++//Autor: Huang/ /Copyright:www.dotcpp.com//Fecha:2018/6/20********************************* * *******/#include<iostream>usingnamespacestd;classClock{privado:intH;intM;intS;public:intSetTime(inth,intm,ints){this->H=h;this->M=m ; this->S=s;return0;}intShowTime(){cout<<Ahora:<<H<<:<<M<<:<<S<<endl;return0;}};classAlarmClock:publicClock{privado: intAH ;intAM;public:intSetAlarm(intAH,intAM){this->AH=AH;this->AM=AM;return0;}intShowAlarm(){cout<<AlarmTime:<<AH<<:<<AM<< endl ;return0;}};intmain(){AlarmClockA;A.SetTime(19,15,50);A.ShowTime();A.SetAlarm(5,30);A.ShowAlarm();return0;}
La captura de pantalla en ejecución es la siguiente:
Lea y comprenda el código. Clock es la clase base y AlarmClock es la clase derivada. Preste atención a la declaración que define la clase derivada:
claseRelojAlarma:relojpúblico
La herencia está representada por dos puntos , donde público representa la herencia pública, la herencia privada y la herencia protegida, que ampliaremos más adelante. En el código, definimos el objeto A de la clase derivada AlarmClock en la función principal, y luego podemos llamar a los métodos SetTime y ShowTime desde la clase base y usarlos igual que los nuestros. Al mismo tiempo, hemos agregado y definido nuestros propios métodos SetAlarm y ShowAlarm en la clase derivada. Comprenda el código y experimente en la computadora.
Hasta ahora, hemos introducido los conceptos básicos de herencia y derivación. Después de comprender esto, debe experimentar con la codificación en una computadora para comprender en qué circunstancias dos clases que tienen puntos en común y están relacionadas pueden tener este tipo de relación y sopesarlas. usar.