Llamada implícita de java y js

Llamadas implícitas en java y js

La llamada implícita es que la activación de un evento lleva a la invocación de un procedimiento en otro módulo, en términos simples, llama automáticamente a algunos métodos, y estos métodos pueden ser modificados externamente como hooks para cambiar el comportamiento establecido.

	java
		当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。
//父类
class Animal{
  private String name;
  
  //如果你定义一个新的构造方法
  public Animal(String name) {
    this.name = name;
  }
}

//子类
public Dog extends Animal{
  
  //这是你就要显示的调用父类的构造方法,因为子类默认调用的是父类的
  //无参构造方法Animal()
  public Dog(){
    super("小狗");  //显示调用父类的有参构造方法

    ....  //子类的构造方法处理
  }
}

//当然,如果你在父类里面把无参的构造方法,显示的写出来了,比如:

//父类:

class Animal{
  private String name;

  //无参的构造方法
  public Animal() {
    .....  //处理
  }
  
  //如果你定义一个新的构造方法
  public Animal(String name) {
    this.name = name;
  }
}
//那么在子类的构造方法中,就可以不用显示的调用父类的构造方法,因为子类有个无参的构造方法,子类在构造方法中会自动调用父类已经定义的无参构造方法。
js
	数据类型转换 toSting 和 valueOf。
	在进行转换运算时会隐式调用上面两个方法
	var obj = {
		a: 1,
		toString: function () {
			console.log('toString')
	  		return '2'
	  	},
	  	valueOf: function () {
	  		console.log('valueOf')
			return 3
		}
	}
	console.log(obj == '2'); //依次输出 'valueOf' false
	console.log(String(obj));//依次输出 'toString' '2'
	-----------------------------------------------------------
	var obj = {
		a: 1,
		toString: function () {
			console.log('toString')
	  		return '2'
	  	},
	  	valueOf: function () {
	  		console.log('valueOf')
			return {} //修改为对象
		}
	}
	console.log(obj == '2'); //依次输出 'valueOf' false
	console.log(String(obj));//依次输出 'toString' '2'

En la operación del operador de igualdad, el objeto primero llamará a valueOf. Si el valor devuelto es un objeto, se llamará a toSting, excepto null, y luego el valor devuelto se utilizará para la comparación. El primer ejemplo es equivalente a 3 == '2' salida falsa, en el segundo ejemplo, debido a que la ejecución de valueOf devuelve un objeto y luego se ejecuta toString, el equivalente final es '2' == '2'. La salida es verdadera. En Number y String los métodos, Number llamará primero a valueOf y luego a los métodos toString y String. El chino es lo opuesto.

Además de los dos ejemplos anteriores, la conversión de tipos de datos también existe en varias otras operaciones, como operaciones numéricas. Cuando se trata de tipos de referencia, se llaman los métodos valueOf o toString. Siempre que el objeto sea un objeto, estos dos métodos son heredados. Estos dos métodos se pueden recuperar, lo que afecta el comportamiento de la conversión de tipos de datos

Supongo que te gusta

Origin blog.csdn.net/old_wzhou/article/details/107342670
Recomendado
Clasificación