¿Qué es la herencia (se extiende)?
La herencia es: una clase recientemente definida es un fenómeno para obtener atributos y métodos de las clases existentes. Esta clase existente se llama clase principal, y la clase que obtiene propiedades y métodos de esta clase principal se llama subclase.
Extendsdemo1.java
La copia del código es la siguiente:
/*¿Qué es la herencia*/
clase pública extendsdemo1 {
public static void main (string [] args) {
Camión t = nuevo camión ();
t.size = 100; Es mejor usar constructores para inicializar las variables de los miembros, o proporcionar interfaces set () y get ().
// Una instancia de la clase de camión hereda el tamaño y los atributos de color de la clase de automóvil.
// ¿Qué camión tiene una caja de carga más que un coche?
}
}
coche de clase {// coche
tamaño int; //
Color de cuerda;
}
El camión de clase extiende el coche {// camión
String Packingbox;
}
Los beneficios de la herencia
1. Reutilización de código mejorado
2. Deje que una relación entre clases crea una condición para el polimorfismo.
Formato heredado (extendido)
La copia del código es la siguiente:
La subclase de clase extiende la superclase {
// Ejecutar la declaración;
}
Palabras clave super
1. El uso de la palabra clave súper es el mismo que este
2. Esto representa la referencia de esta clase, y Super representa la referencia de la clase principal
3. Cuando aparece un miembro del mismo nombre en la clase de subclase y padre, puede usar Super y esto para distinguirlo.
Superdemo.java
La copia del código es la siguiente:
/* Uso de Super
* Resultado de salida:
* super.i = 10, this.i = 20
*/
Clase pública Superdemo {
public static void main (string [] args) {
nueva subclase (). showMessage ();
}
}
Superclase de clase {
int i = 10;
}
La subclase de clase extiende la superclase {
int i = 20;
public void showMessage () {
System.out.printf ("super.i = %d, this.i = %d/n", super.i, this.i);
}
}
Anular los métodos heredados de la clase principal (anular)
1. Cuando un método exactamente igual que la clase principal aparece en una subclase (valor de retorno, nombre de la función, parámetros formales), se producirá una operación de anulación.
Overidedemo1.java
La copia del código es la siguiente:
/* Cómo anular el método heredado de la clase principal (anular)
* Resultado de salida:
* Superclase: estoy bien ~
* Subclase: soy excelente ~~~
*/
clase pública anveridedemo1 {
public static void main (string [] args) {
Subclase sc = new subclass ();
sc.speak ();
}
}
Superclase de clase {
public void speak () {
System.out.println ("Superclase: soy bueno ~");
}
}
La subclase de clase extiende la superclase {
@Override //@anulación significa que el siguiente método tendrá una operación de reescritura. Aumento de la seguridad del código hasta cierto punto
y robustez
public void speak () {
super.speak ();
System.out.println ("Subclase: soy excelente ~~~");
}
}
2. Al anular el método de la clase principal, la clase infantil no permite métodos con el mismo nombre y parámetros que la clase principal sino con diferentes tipos de retorno.
Overidedemo2.java
La copia del código es la siguiente:
/* Métodos con el mismo nombre y parámetros que la clase principal, pero con diferentes tipos de retorno no están permitidos en subclases.
* Mensaje de error:
* Overidedemo.java:20: Error: f () en subclase no puede anular f () en superclase
* public int f () {
* ^
* El tipo de retorno int no es compatible con void
* Overidedemo.java:19: Error: el método no anula ni implementa un método desde un supertipo
* @Override
* ^
* 2 errores
*/
clase pública anuledemo2 {
public static void main (string [] args) {
}
}
Superclase de clase {
public void f () {
}
}
La subclase de clase extiende la superclase {
@Anular
public int f () {
regresar 1;
}
}
3. El permiso de acceso del método de la subclase reescribe la clase principal debe ser mayor o igual al método de reescritura en la clase principal.
Overidedemo3.java
La copia del código es la siguiente:
/* El permiso de acceso del método de la subclase anula la clase principal debe ser mayor o igual al permiso de acceso del método de clase principal
* Mensaje de error:
* Overidedemo.java:18: Error: f () en subclase no puede anular f () en superclase
* vacío protegido f () {
* ^
* Intentar asignar privilegios de acceso más débiles;
* 1 error
*/
clase pública anuledemo3 {
public static void main (string [] args) {
}
}
Superclase de clase {
public void f () {
}
}
La subclase de clase extiende la superclase {
@Anular
vacío protegido f () {// Cambiar el permiso de acceso aquí a público
}
}
Controlador de acceso
Los caracteres de control de acceso son: público, protegido, predeterminado, privado
Algunos requieren un poco de conocimiento de los paquetes, por lo que hablaré de ello cuando hablo de paquetes.