significado de valor de retorno en java?

Soy un principiante y me estaba viendo un tutorial en youtube donde el tutor habló acerca de los diversos métodos. Él habló sobre la devolución de los valores en java, pero yo no entiendo una cosa sobre ella. Primero voy a compartir la secuencia de comandos y, a continuación, compartir mis pensamientos y consultas.

Aquí es el class1 guión:

import java.util.Scanner;
class class1{
public static void main(String args[]){
    System.out.println("This is class1.");
    Scanner x = new Scanner(System.in);
    System.out.print("Please enter the name of your first gf here:");
    String name = x.nextLine();

    class2 class2obj = new class2();
    class2obj.setname(name);
    class2obj.tellname();
}
}

Como se puede ver es que tiene el método main y lo que hace es : primero se solicita el nombre de su primera novia y luego almacenarlo en la variable name. A continuación, vincula la class2 secuencia de comandos que voy a compartir después de esto y ejecuta el método setname en la clase2.

La class2 secuencia de comandos es:

class class2{
    private String girlname;
    public void setname(String name){
    girlname = name;
}
public String returnname(){
    return girlname;
}
public void tellname(){
    System.out.printf("your first girlfriend was %s",returnname());
}
}

En class2, puedo ver que el setname método establece el valor de la name a una variable privada girlname pero mi pregunta es que ¿qué es lo devolver? ¿Por qué se requiere la returnname método? Es absolutamente esencial para la inter-método de variables? También, ¿por qué no es posible devolver el girlname en el setname método?

No sé una cosa sobre el retorno, por lo que un vídeo o un artículo de una gran ayuda. También, esta es la razón, si usted encuentra lo que digo arriba extraño.

También, por favor, dime qué returnname método y la tellname método está haciendo.

También, en class1 ejecutamos class2obj.tellname ¿por qué no nos ejecutar class2obj.returnname ?

Estoy realmente confundido ahora mismo así que por favor no me importa si estoy actuando tonto.

  • docs.oracle.com/javase/tutorial – tienes que ir a través de algunos de los más tutoriales y libros. Parece que te falta un buen montón de los fundamentos, y no estoy seguro de que este sitio es un buen ajuste para la enseñanza de todas esas cosas en una sola pregunta.

8 Kommentare

  1. 6

    Primero de todo, si el código que has dado es realmente el código que se usa en el tutorial, a continuación, elija otro tutorial. No siquiera el respeto de las convenciones de nomenclatura estándar de Java.

    Entonces, para responder a su pregunta. Un objeto es una mezcla de estado (campos) y comportamiento (métodos). Algunos de los métodos de modificar el estado del objeto. Algunos métodos para acceder al estado del objeto. Algunos métodos permiten hacer ambas cosas. Algunos métodos utilizan el estado del objeto y otros objetos para hacer algo útil.

    El método void setName(String name) no devuelve nada. Si había un comentario de javadoc, y si la clase y el método nombres fueron sabiamente elegido, este comentario diría:

    /**
     * Sets the name of this GirlFriend object. Replaces the previous name of
     * the girl friend with the new name given as argument
     */
    public void setName(String newName) {
        this.name = newName;
    }

    Este método modifica el estado del objeto, y no necesita devolver nada. Su responsabilidad es la de cambiar el nombre, y nada más. Devuelve el nuevo nombre no sirve a ningún propósito, puesto que la persona que llama ya sabe que: se pasa como argumento.

    Más tarde, usted podría estar interesado en saber el nombre de la niña de un amigo:

    /**
     * Returns the name of this GirlFriend object
     */
    public String getName() {
        return this.name;
    }

    Este método no necesita ningún tipo de argumento: permite pedir el amigo de la niña por su nombre, y el método devuelve el nombre de una respuesta.

    Me gustaría ir con un buen libro, o con la oficial de Java tutorial para aprender más.

    • A todos los que leen el código de cuidado. Una de las primeras cosas que debes aprender es que el código sea legible es enormemente importante.
    • Tienes razón en que no afecta a la capacidad de poder ejecutar el código. Sin embargo, si alguna vez la necesidad de trabajar en un proyecto con varias personas, a continuación, siguiendo estas pautas de estilo hacen que sea mucho más fácil de entender cada uno de los otros del código.
    • Incluso si usted trabaja solo, no respetando buena estándares de nomenclatura de afectarán a usted. Dejo el código que escribió para una semana, volver y tratar de mejorarlo, y vas a sufrir a causa de la mala nombres que eligió, y porque son incompatibles con el resto de la norma API.
  2. 1

    setname tiene tipo de retorno void, lo que significa que no devuelven nada en absoluto. El comportamiento de esta función es almacenar el nombre para su posterior recuperación.

    returnname tiene tipo de retorno String, y será llamado cuando se quiere recuperar lo que fue almacenado anteriormente.

    El patrón, mal ejemplificó, se utiliza aquí es la función de captador/definidor. Ellos son complementarias, pero muy diferentes (opuesto) de la conducta.

    Que podría devolver un valor con su setter setname – pero (para un principiante de todos modos) una complicación innecesaria – vamos a no ir allí, ok? Mantenga sus métodos único propósito y centrado.

    tellname es una función auxiliar para imprimir relacionados con el nombre de la salida a la consola.

    Respecto:

    también, en class1 ejecutamos class2obj.tellname ¿por qué no nos ejecutar class2obj.returnname ?

    Usted podría.. como tellname() llamado returnname(). El código de class1 podría reemplazar

    class2obj.tellname();

    con

    Sistema.a cabo.printf(«su primera novia fue %s», class2obj.returnname());

    Finalmente, para reiterar /enfatizan como otros han sugerido – ir a buscar un nuevo tutorial.

  3. 1
    1. setName no devuelve nada.
      para ser honesto, no es nada es un tipo especial vacío que no significa nada.
    2. Es posible devolver girlname desde el punto de java sintaxis, pero no tiene sentido en la mayoría de los casos, porque necesitamos separar getter. Lea más acerca de java beans y getter/setter. También este método tiene dos responsabilidades (valor de cambio, resultado de retorno) que no es bueno.
    3. Como ya se entiende returnname es el método getter, y se utiliza para obtener el valor de la variable privada. Lea más acerca de java modificadores de acceso. tellname sólo de la impresora método y muestra en la salida estándar nombre de la novia.
    4. Porque returnname devuelve la cadena de objeto, que la variable sav ed en la memoria y se puede imprimir con el uso de System.out.println(class2Obj.returnname()). Pero usted tiene método impresión, ¿por qué usted necesita hacer esto? simplemente llame a class2Obj.tellname() (Esto es malo enfoque, aunque)

    PS. No llame a la porción de código java script 🙂

  4. 0

    Leer acerca de los conceptos de la programación orientada a objetos y java fundamentos primero a entender esto. I wil tratar de explicar en breve aquí.

    girlname se declara como una variable privada , lo que significa que no se puede acceder directamente desde el exterior class2. Por lo tanto los 2 métodos para establecer y devolver el girlname variable se hacen , para acceder al valor de la variable desde fuera de la clase.

    También se puede utilizar classobj2.returnname , que se devolverá el valor de la girlname variable en la clase 2 y mostrarlo. classobj2.tellname se utiliza aquí para simple imprimir el valor de la variable directamente.

  5. 0

    returnname() y setname() son ejemplos de los métodos getter y setter (respectivamente). estos también son conocidos como mutador métodos.

    La principal razón por la que estos tipos de métodos que existen es el honor de la encapsulación. Este tutorial es obviamente un ejemplo muy sencillo donde esto no es necesario, pero imagine que usted está construyendo un sistema en el que desea que el usuario pueda encontrar la información en una base de datos. Si usted no utiliza un método setter y en lugar de permitir al usuario acceder directamente a la variable que se convierte en parte de la ejecución de la consulta en la base de datos, a continuación, se puede insertar todo tipo de desagradables código y hackear la base de datos (esto se conoce como un Ataque de inyección de SQL). Se impide esta ocultando la variable del usuario (en el ejemplo la variable es private) y establecer el valor a través de métodos setter. Este método puede ser más compleja de lo que su ejemplo y mirar en la entrada para eliminar los no deseados de entrada. Por supuesto, ahora que la variable está oculto necesitamos una manera para otros objetos para acceder al valor, por lo tanto el método getter.

    En resumen, que conduce a un sistema más seguro y permite a los desarrolladores controlar cómo una variable es accesible a evitar el uso indebido. Aunque usted está trabajando en un ejemplo muy simple, es una buena práctica para aprender como va a ser importante en la construcción de los sistemas de seguridad más tarde.

  6. 0

    Java función es una parte de código que escribió con el fin de hacer algún tipo de acción.
    A veces en la final de esta acción que desea una respuesta, a veces sólo necesitas algo.
    Cuando se desea una respuesta que escribir una función que devuelva un objeto determinado de otro modo
    establecer que la función void. y no devuelven nada.

    Cuando llame setName estás acción es establecer el nombre del objeto, así que no tenía necesidad de nada.
    Cuando llame returnName desea una respuesta – ¿cuál es el nombre del objeto, así que hay que utilizar
    la instrucción return.

  7. 0

    Porque girlname es private, no puede ser accedido por cualquiera otros objetos, así que a menos que proporcionar alguna forma de leer el valor, usted nunca será capaz de obtener el valor de

    Es esencial? No, pero es una buena práctica. Esto impide que otros objetos de cambiar girlname sin que usted lo sepa. Esto es en realidad un concepto muy importante en la programación orientada a objetos.

    Sería muy vesiable para devolver el girlname de la setname método, pero ¿cuál sería el punto. Ya ha pasado en el valor, que sugiere que ya se tiene acceso a la variable?

    tellName no hace nada más que más, a continuación, muestra algunas de texto, de hecho, utiliza el returnname método.

    No hay ninguna razón por qué usted no puede llamar a returnname, pero a menos que se le asigna a una variable, no hay mucho punto

    Usted podría tener una lectura de Learnng el Lenguaje Java

  8. 0

    Primero, esas secuencias de comandos reales de la clase de fuentes, pero eso es comprensible – principiantes hacer llegar la terminología equivocado mucho, no importa qué idioma es 🙂

    Los convenios de la muestra por estas fuentes son bastante terrible y lo más probable es contribuir a la confusión, pero la conclusión es que todas las variables tienen un ámbito de aplicación. Alcance en pocas palabras, significa que la variable puede ser usada y el alcance es visto como una de las cosas más importantes que atender en un buen código para evitar que extraños efectos secundarios y los errores que son de difícil o simplemente imposible de solucionar.

    En el class2 arriba, que en realidad son correctos, la llamada al método returnname() no es realmente necesario en tellname(), desde el private String girlname campo es en privado de clase ámbito de aplicación; es decir, todos los métodos dentro de la clase puede ver ese campo en particular directamente.

    También pedir

    why isn't it posible to return the girlname in the setname method?

    que en realidad es posible, pero como ya he mencionado, el código es muy poco convencional a la normal de Java que es, sin duda, causando cierta confusión; la getX/setX método de convención de nomenclatura es lo que se conoce como propiedad patrón, es una convención donde una clase que tiene un campo privado de tipo Foo expone dos ámbito público métodos para permitir a los usuarios de la clase para modificar ese campo. Este convenio es parte de JavaBeans, lo cual es un gran tema para un paso lateral a la derecha ahora, si lo desea, puede leer acerca de que en su propio. Una clase simple que muestra este tendría este aspecto:

    public class FooFieldBean {
        private Foo field;
    
        public Foo getFoo() {
            return field;
        }
    
        public void setFoo() {
            this.field = field;
        }
    }

    Como un pequeño bono, he aquí las dos clases de fuentes de limpiar para que coincida comunes de Java convenciones. Preste atención a las mayúsculas, espacios de uso y la sangría.

    import java.util.Scanner;
    public class Class1 {
        public static void main(String[] args) {
            System.out.println("This is Class1.");
            Scanner x = new Scanner(System.in);
            System.out.print("Please enter the name of your first gf here:");
            String name = x.nextLine();
    
            Class2 class2obj = new Class2();
            class2obj.setName(name);
            class2obj.tellName();
        }
    }
    
    
    public class Class2 {
        private String girlName;
    
        public void setName(String name) {
            girlName = name;
        }
    
        public String getName() {  
            return girlName;
        }
    
        public void tellName() {
            System.out.printf("your first girlfriend was %s",getName());
        }
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea