Red de conocimiento informático - Material del sitio web - En un programa Java, ¿qué significa instancia de?

En un programa Java, ¿qué significa instancia de?

¿Qué es la instancia de?

instanceof es un operador binario en Java y pertenece al mismo tipo de operadores que ==, > y <. También es una palabra clave reservada en Java ya que consta de letras. Su función es probar si el objeto de la izquierda es una instancia de la clase de la derecha y devolver datos de tipo booleano. Por ejemplo:

String s = "¡SOY un Objeto!";

boolean isObject = s instancia del Objeto;

Declaramos un puntero a un objeto String Haga referencia al objeto de cadena y luego use instancof para probar si el objeto al que apunta es una instancia de la clase Object, lo cual es obviamente verdadero, por lo que devuelve verdadero, lo que significa que el valor de isObject es Verdadero. Por ejemplo, escribimos un sistema para procesar facturas, que tiene tres clases:

clase pública Bill {/ omitir detalles}

clase pública PhoneBill extiende Bill {/ omitir detalles}

clase pública GasBill extiende Bill {/ omitir detalles}

Hay un método en el controlador que acepta un objeto de tipo Bill y calcula el monto. Suponiendo que los dos billetes se calculan de diferentes maneras, el objeto Bill pasado puede ser uno de ellos, así que utilice instancia de para determinar:

public doublecalcul(Bill bill) {

if (instancia de factura de factura telefónica) {

//calcular factura telefónica

}

if (instancia de factura de factura de gas) {

// calcular GasBill

}

...

}

De esta manera, un método puede manejar dos subclases al mismo tiempo.

Sin embargo, a menudo se considera que este enfoque no hace un buen uso del polimorfismo en la orientación a objetos. De hecho, las funciones anteriores se pueden lograr completamente mediante la sobrecarga de métodos, que es exactamente lo que debe hacer la orientación a objetos para evitar caer en un modelo de programación estructurada. Simplemente proporcione dos métodos con el mismo nombre y valor de retorno que acepten argumentos de diferentes tipos:

public double calcular(PhoneBill bill) {

//calcular la factura del teléfono

}

cálculo doble público (factura de gas) {

//calcular factura de gas

}

Por lo tanto, en la mayoría En estos casos, usar instancia de no es una práctica recomendada, pero se debe aprovechar al máximo el polimorfismo.