La relación entre el aprendizaje de Java y similares

Hay muchas relaciones entre clases y clases de Java, que se pueden dividir en herencia (generalización), asociación y dependencia. Entre ellos, la relación de asociación se puede subdividir en relaciones de combinación y agregación.

Generalización

Es decir, la relación de herencia, es decir, hay una relación es-a, y la palabra clave extiende se usa comúnmente en Java para lograr.
Por ejemplo:

class animal{
    
}
//实现类的继承
public class cat extends animal{
    
}

La herencia en Java puede lograr la reutilización de código, pero no es la mejor forma de reutilización de código, porque la herencia rompe la encapsulación y mejora el acoplamiento de código. La implementación de la clase alta puede cambiar dependiendo de la versión de lanzamiento (por ejemplo, se agregan nuevos métodos). En este momento, la capa inferior puede estar "rota", incluso si el código de la clase inferior no ha cambiado.

confiar

La relación de dependencia (dependencia) es la conexión entre clases. La dependencia significa que una clase depende de la definición de otra clase. Por ejemplo, una persona (Persona) puede comprar un coche (coche) y una casa (Casa). La clase Persona depende de las definiciones de las clases Coche y Casa porque la clase Persona hace referencia a Coche y Casa. A diferencia de la asociación, no hay atributos de los tipos Car y House en la clase Person. Las instancias de Car y House se pasan al método buy () en forma de parámetros. En términos generales, las dependencias están incorporadas en el lenguaje Java como variables locales, parámetros formales de métodos o llamadas a métodos estáticos .

class Car{
	public static void run(){
	}
}
class Driver{
	//使用形参方式发生依赖关系
	public void drive1(Car car){
		car.run();
	}
	//使用局部变量发生依赖关系
	public void drive2(){
		Car car=new Car();
		car.run();
	}
	//使用静态变量发生依赖关系
	public void drive3(){
		car.run();
	}
}

La dependencia es la relación más débil En el ejemplo anterior, la clase Driver depende de la clase Car.

Asociar

La relación de asociación (Association) es la conexión entre clase y clase, hace que una clase conozca las propiedades y métodos de otra clase. La asociación puede ser bidireccional o unidireccional. En el lenguaje Java, las relaciones de asociación se implementan generalmente usando variables miembro .

class Driver{
	Car mycar;
	//使用成员变量形式实现关联  
	public void drive(){
		mycar.run();
	}
}

La asociación es una relación más fuerte que la dependencia.

polimerización

La relación de agregación es un tipo de relación de asociación , que es una relación de asociación fuerte . La agregación es la relación entre el todo y el individuo . Por ejemplo, categoría de empresa y categoría de empleado. Al igual que la relación de asociación, la relación de agregación también se realiza a través de variables de instancia. Sin embargo, las dos clases involucradas en la relación de asociación están en el mismo nivel, mientras que en la relación de agregación, las dos clases están en el nivel desigual, una representando el todo y la otra representando la parte. La agregación es una relación tiene-una.

La agregación puede estar vacía . Sigue siendo tipo de empresa y tipo de empleado. Cuando una empresa no tiene empleados, sigue siendo una empresa, simplemente una empresa fantasma. Comparada con la relación entre el todo y la parte de la combinación, la agregación es un tipo de relación que no tiene la relación de "frialdad de labios y dientes, supervivencia y muerte juntas".

class Driver {  
    //使用成员变量形式实现聚合关系  
    Car mycar;  
    public void drive(){  
        mycar.run();  
    }  
}

Las relaciones de agregación generalmente usan métodos de establecimiento para asignar valores a las variables miembro.

combinación

La relación de composición es un tipo de relación de asociación, que es más fuerte que la relación de agregación . Requiere que el objeto que representa el todo en la relación de agregación ordinaria sea responsable de representar el ciclo de vida de algunos objetos, y la relación de composición no se puede compartir . El objeto que representa el todo debe ser responsable de mantener viva y parte del objeto y, en algunos casos, aniquilar el objeto que representa la parte. El objeto que representa el todo puede pasar el objeto que representa la parte a otro objeto, que es responsable del ciclo de vida de este objeto. En otras palabras, la parte representativa del objeto solo se puede combinar con un objeto a la vez, y este último es el único responsable del ciclo de vida. La parte y el ciclo de vida completo son iguales .

class Driver{
	Car mycar;
	public Driver(Car car){
		mycar = car;
	}
}

Es más probable que las relaciones de combinación utilicen métodos de construcción para lograr el propósito de la inicialización. En comparación con la herencia mencionada anteriormente, puede elegir combinación o agregación para reemplazarla con más frecuencia.A través de la asociación, la clase original que desea heredar se programa como un componente de la nueva clase. Cada método de instancia en la nueva clase puede llamar al método correspondiente en la instancia de la clase existente incluida y devolver su resultado. Este comportamiento se llama reenvío y el método en la nueva clase se llama método de reenvío.

para resumir:

  1. La asociación, agregación y combinación solo se pueden juzgar en conjunto con la semántica y el contexto. En muchos casos, sus códigos pueden ser similares o incluso iguales.
  2. Es correcto utilizar la herencia solo cuando existe una relación de herencia entre la clase baja y la clase alta.

Referencia:
http://www.importnew.com/15490.html
"la programación orientada a objetos de Java" por: Sunweiqin

Supongo que te gusta

Origin blog.csdn.net/dypnlw/article/details/82785409
Recomendado
Clasificación