//  
//  java409.java
//  Copyright (c) 1997, Agustin Froufe
//  Todos los derechos reservados.
//  
//  No se asume ninguna  responsabilidad por el  uso o  alteracion  de este
//  software.  Este software se proporciona COMO ES, sin garantia de ningun
//  tipo de su funcionamiento y en ningun caso sera el autor responsable de
//  daños o perjuicios que se deriven del mal uso del software,  aun cuando
//  este haya sido notificado de la posibilidad de dicho daño.
// 
//   Compilador: javac 1.1.1
//        Autor: Agustin Froufe
//     Creacion: 01-Aug-1997  20:23:34
// 
//--------------------------------------------------------------------------
//  Esta informacion no es necesariamente definitiva y esta sujeta a cambios
//  que pueden ser incorporados en cualquier momento, sin avisar.
//--------------------------------------------------------------------------

/**
 * Ilustra el retorno de una referencia a un objeto desde un método
 * También se muestra la instanciación de un objeto de la clase para
 * permitir que sus métodos sean llamados
 */

class java409 { 
    public static void main( String args[] ){ 
		// Instancia un objeto de la clase para permitir que sus
		// métodos puedan ser llamados
        java409 obj = new java409();

		// Declara una referencia al objeto del tipo que será
		// devuelto por el método test()
        miClase objMain;

		// Utiliza el objeto de la clase para llamar al método
		// test() y asignarle la referencia que restorna a objMain
        objMain = obj.test();

		// Intenta sobreescribir el objeto devuelto creando un
		// array bastante grande y rellenándolo de datos
        int memArray[] = new int[50000];
        for( int i=0; i < 50000; i++ )
			memArray[i] = i + 5;

		// Presenta el valor del objeto devuelto por test(), para
		// mostrar que la referencia todavía es válida
        System.out.println( "El valor de retorno es " + 
			objMain.miDato );
        }


	// Método que utilizamos para devolver la referencia
    miClase test() {
		// Se instancia un objeto
        miClase objLocal = new miClase( 6 );

		// Se devuelve la referencia al objeto local
        return objLocal;
        }
    }


// Clase para instanciar un objeto en test()
class miClase {
    int miDato;

	// Constructor
    miClase( int datoEntrada ) {
		miDato = datoEntrada;
	    }
    } 

//------------------------------------------- Final del fichero java409.java
