Al escribir una subclase, todavía podemos declarar variables miembro. Un caso especial es que el nombre de la variable miembro declarada es el mismo que el nombre de la variable miembro heredada de la clase principal, y el tipo declarado puede ser diferente. En este caso, la subclase ocultará las variables miembro heredadas.
Las características de las subclases que ocultan variables miembro heredadas son las siguientes:
(1) Los objetos y métodos de subclase definidos por la subclase operan variables miembro con el mismo nombre que la clase principal, que se refiere a la variable miembro redeclarada por la subclase.
(2) Los objetos de subclase aún pueden llamar a métodos heredados de la clase principal para operar variables miembro ocultas por la subclase, es decir, las variables miembro operadas por los métodos heredados de la subclase deben ser variables miembro heredadas u ocultas por la subclase.
Aviso:
Los métodos heredados de subclases solo pueden operar en variables miembro heredadas y ocultas de subclases. Un método recién definido por una subclase puede operar con variables miembro heredadas por la subclase y recientemente declaradas por la subclase, pero no puede operar con variables miembro ocultas por la subclase.
Las subclases pueden ocultar métodos heredados anulándolos. La anulación de métodos también se denomina anulación de métodos. Si una subclase puede heredar un método de la clase principal, entonces la subclase tiene derecho a anular este método. La anulación de método se refiere a definir un método en una subclase. El tipo de este método es consistente con el tipo de método de la clase principal o un subtipo del tipo de método de la clase principal, y el nombre del método. El número de parámetros, el tipo de parámetros y los métodos de la clase principal son exactamente los mismos. El método definido de esta manera por una subclase se denomina método anulado por la subclase y no es un método nuevo.
Las subclases pueden ocultar métodos heredados mediante la reescritura de métodos y cambiar el estado y el comportamiento de la clase principal por los suyos propios. Si la clase secundaria puede heredar el método f () de la clase principal, la clase secundaria tiene derecho a anular f (). Una vez que la clase secundaria anula el método f () de la clase principal, el método heredado f () se oculta. Entonces la clase secundaria tiene derecho a anular f(). Cuando un objeto de clase llama al método f(), debe llamar al método anulado f(). Si la subclase no anula, pero hereda el método f () de la clase principal, entonces, por supuesto, el objeto creado por la subclase puede llamar al método f (), pero el comportamiento producido por el método f () es el mismo que el de la clase padre.
El método anulado no solo puede operar variables miembro heredadas y llamar a métodos heredados, sino que también puede operar variables miembro recientemente declaradas de la subclase y llamar a otros métodos recién definidos, pero no puede operar las variables miembro y los métodos ocultos por la subclase. Si una subclase quiere utilizar métodos ocultos o variables miembro, debe utilizar la palabra clave super.
Aviso:
Al anular un método de una clase principal, no se le permite reducir los derechos de acceso del método, pero puede aumentar los derechos de acceso. El orden de los modificadores de restricción de acceso de mayor a menor es: público, protegido, amigable. privado. Por ejemplo: una subclase anula el método f de la clase principal. El permiso de acceso de este método en la clase principal es el nivel protegido. Cuando la subclase anula, no se permite que el nivel sea inferior al protegido.