La esencia del resumen de pensamiento orientado a objetos de Java


Prefacio

Reglas de diseño : Las reglas generales de diseño son las siguientes:

  1. Extraiga los atributos y comportamientos comunes de todas las clases derivadas (subclases) en la superclase --------------- Extraiga elementos comunes.
  2. Todas las clases derivadas (subclases) tienen el mismo comportamiento y están diseñadas como métodos ordinarios Todas las clases derivadas tienen comportamientos diferentes y están diseñadas como métodos abstractos.
  3. Extraiga los comportamientos comunes de algunas clases derivadas (subclases) en la interfaz y expanda la herencia de raíz única en la interfaz ---------------- realice la herencia múltiple.

Tres características orientadas a objetos: encapsulación, herencia, polimorfismo

Un paquete

1. Se refiere a un método de empaquetar y ocultar los detalles de implementación de una interfaz funcional abstracta.
2. Para acceder al código y los datos de esta clase, debe pasar un estricto control de interfaz (privatización de propiedad privada, publicidad de comportamiento pública).
Nota: Si la propiedad es privada y necesita ser accedida por otras clases en el mismo paquete, getters y setters ( Un método con un valor de retorno, sin participación, sin valor de retorno y parámetros)

Segundo, herencia

1. La clase secundaria hereda el método miembro de la clase principal. Si el método miembro con el mismo nombre aparece en la clase secundaria, es una sobreescritura, es decir, el método miembro de la clase secundaria anula el método miembro de la clase principal. Para acceder al método miembro de la clase principal en la clase secundaria, use super ( ).
2. La llamada al constructor y el proceso de inicialización de la clase padre deben estar delante de la clase hija.
3. La herencia es el proceso de crear una nueva clase obteniendo información de herencia de una clase existente y heredando el comportamiento o las propiedades de la clase padre.

Tres, polimorfismo

Objetos de diferentes tipos responden al mismo mensaje, es decir, el mismo mensaje se puede hacer de acuerdo con diferentes objetos o adoptar una variedad de comportamientos diferentes. (Enviar un mensaje es una llamada de función)
1. La tecnología para lograr polimorfismo: el enlace dinámico se refiere a juzgar el tipo real al que se hace referencia durante la ejecución y llamar a su método correspondiente de acuerdo con su tipo real.
2. Rol: eliminar la relación de acoplamiento entre tipos.
3. Tres condiciones necesarias para la existencia de polimorfismo: herencia, reescritura y referencias de clase padre apuntan a objetos de subclase (upcast).
4. Cuando use el método polimórfico para llamar al método, verifique si existe el método en la clase principal, si no, entonces el error de compilación, si lo hay, entonces llame al método del mismo nombre en la subclase.

Nota: El método estático es un caso especial. El método estático solo se puede heredar y no se puede anular. Si un método estático con el mismo nombre y forma se define en una subclase, solo ocultará el método de la clase principal. Llame para ver de quién se utiliza la referencia y de qué versión se llama.
El siguiente código castaño:

public class A {
    
    
	int age1=1;
	String name1="我是父类";
	void show1() {
    
    
		System.out.println("this is 父类");
	}
	static void method1(){
    
    
		System.out.println("我是父类静态方法");
	}
}
public class B extends A {
    
    
	int age2=2;
	String name2="我是子类";
	String newBianliang = "我是新增成员变量";
	void show1() {
    
    
		System.out.println("this is 子类,我重写了父类的show()方法");
	}
	void showB_1() {
    
    
		System.out.println("子类新增的方法");
	}
	static void method1(){
    
    
		System.out.println("我是子类静态方法");
	}
}
public class App {
    
    
	public static void main(String[] agrs) {
    
    
		//上转型对象
		A a = new B(); //父类引用指向子类
		//能操作继承或隐藏的成员变量,
		System.out.println(a.age1);
		System.out.println(a.name1);		
		a.show1();//能调用子类继承或重写的方法
		a.method1();
		
//		System.out.println(a.age2);
//		System.out.println(a.name2);
//		System.out.println(a.newBianliang);
		//编译错误,不能操作子类新增的成员变量
		
		//a.showB_1();//编译错误,不能调用子类新增方法
		
		/**
		 * 上转型对象特点总结:可以操作继承或隐藏成员变量,
		 * 调用子类继承或重写的方法.
		 * 不能操作子类的新增成员变量,不能调用子类新增的方法
		 */
		
		System.out.println("-----------------");
		B b = new B();
		System.out.println(b.age2);
		System.out.println(b.name2);
		a.method1();
	}
}

Resultado del código:
Inserte la descripción de la imagen aquí

5. Si desea llamar a algunos métodos en la subclase, pero la clase principal no tiene un método, debe realizar una conversión de tipo, porque cuando la referencia de la clase principal apunta al objeto de la subclase (modelado ascendente), cuando se llama al método con la referencia de clase principal, No se puede encontrar un método que no existe en la clase principal, que requiere conversión de tipo forzada (downcast).
El siguiente código castaño:

//多态的演示
public class Duotai {
    
    
	public static void main(String[] args) {
    
    
		Aoo o = new Boo(); //向上造型
		Boo o1 = (Boo)o; //o所指向的对象,就是Boo类型
		o1.b();
		Inter1 o2 = (Inter1)o; //o所指向的对象,实现了Inter1接口
		o2.a();
		
		//Coo o3 = (Coo)o; //ClassCastException类型转换异常
		
		Aoo dd = new Coo();
		Coo o4 = (Coo)dd;
		o4.a();
		
	}
}

interface Inter1{
    
    
	public void a();
}

class Aoo{
    
    
}

class Boo extends Aoo implements Inter1{
    
    
	public void a() {
    
    
		System.out.println("实现Inter的方法");
	}
	public void b() {
    
    
		System.out.println("引用所指向的对象,就是该类型");
	}
}

class Coo extends Aoo {
    
    
	public void a() {
    
    
		System.out.println("123");
	}
}

//输出结果显示如下:

//所指向的对象,就是该类型
//实现Inter的方法
//123

Resultado de salida: Inserte la descripción de la imagen aquí

4. Resumen (especial)

1. El proceso de resumir las características comunes de la misma clase y construir la clase.
---- 1.1 Incluyendo abstracción de datos y abstracción de comportamiento. La abstracción de datos se convierte en una variable miembro de la clase y la abstracción del comportamiento se convierte en una función miembro de la clase.
---- 1.2 La abstracción solo se preocupa por las variables miembro y las funciones miembro, y no se preocupa por los detalles de implementación específicos.

Cinco, la diferencia entre clase abstracta e interfaz.

1. Las clases abstractas pueden proporcionar los detalles de implementación de los métodos miembros (las clases abstractas no pueden tener métodos abstractos) y solo pueden existir métodos abstractos públicos en las interfaces.
2. Las variables miembro de la clase abstracta pueden ser de varios tipos, y las variables miembro de la interfaz son solo públicas estáticas finales.
3. Las clases abstractas pueden tener métodos estáticos y bloques estáticos, pero no en interfaces (pero JDK 1.8 puede anularse).
4. Una clase solo puede heredar una clase abstracta y una clase puede implementar múltiples interfaces.


Seis, gestión de la memoria

  1. montón:
    • Almacene nuevos objetos (incluidas las variables de instancia);
    • Basura: no hay ninguna referencia al objeto.
      El recolector de basura (GC) limpia la basura del montón de memoria de vez en cuando. El proceso de recolección es invisible y la basura no se recolecta inmediatamente cuando se encuentra. Al llamar a System.gc (), se puede recomendar a la JVM que programe la recolección de GC.
    • Fuga de memoria: la memoria que ya no se usa no se ha recuperado a tiempo.
      Recomendación: establezca referencias a nulo en el tiempo para los objetos que ya no se utilizan.
    • Las variables de instancia se almacenan en el montón durante el ciclo de vida: cuando se crea el objeto, se recicla cuando se recicla el objeto.
  2. Apilar:
    • Almacene las variables locales (incluidos los parámetros del método) en el método que se llama.
    • Cuando se llama a un método, se asigna un marco de pila correspondiente para el método en la pila. Las variables locales en el método (incluidos los parámetros del método) se almacenan en el marco de pila. Después de que se ejecuta el método, el marco de pila se borra y las variables locales se borran juntas.
    • El ciclo de vida de las variables locales: cuando se llama al método, se almacena en la pila y el método finaliza y se borra el marco de la pila.
  3. Área de método:
    • Almacene archivos de código de bytes .class (incluidas variables y métodos estáticos).
    • Solo hay un método y el objeto de llamada específico se distingue por este.

para resumir

Tres características de la orientación a objetos:

  • Paquete:
    • Clase: encapsula las propiedades y el comportamiento del objeto;
    • Método: encapsular una función lógica empresarial específica;
    • Modificador de control de acceso: encapsula permisos de acceso específicos;
  • heredar:
    • Rol: reutilización de código;
    • Superclase: atributos y comportamientos comunes a todas las clases derivadas;
      • Interfaz: el comportamiento común a algunas clases derivadas.
      • Clase derivada: los atributos y comportamientos únicos de una clase derivada.
    • Transitividad, herencia única, realización de múltiples interfaces;
  • Polimorfismo:
    • Significado:
      1. Polimorfismo de comportamiento: todos los métodos abstractos son polimórficos
      2. Polimorfismo de objeto: todos los objetos son polimórficos;
    • Modelado ascendente, conversión de tipo forzada, instancia de juicio;
    • La manifestación del polimorfismo:
      • Reescribir: muestra polimorfismo según diferentes objetos.
      • Sobrecarga: polimorfismo de rendimiento según diferentes parámetros.

Eso es todo para la introducción orientada a objetos de Java.
¡Continúe escribiendo más conocimientos en el seguimiento, para que los lectores no se confundan al aprender!
Escribir no es fácil, por favor, como 3Q. Si hay algún error, comente.


El catálogo de todos los capítulos está aquí: https://blog.csdn.net/qq_41254299/article/details/106638651
Indique la fuente para la reimpresión: https://blog.csdn.net/qq_41254299
Este artículo es del [blog de Superclover_]

Supongo que te gusta

Origin blog.csdn.net/qq_41254299/article/details/108033205
Recomendado
Clasificación