Доступ к локальной переменной из другого класса - PullRequest
0 голосов
/ 07 марта 2020

Мне было интересно, возможно ли получить доступ к локальной переменной из другого класса в Java. Я попытался сделать это в приведенном ниже коде, однако, он дает ошибку. Пожалуйста, уточните, возможно ли это, и как это можно сделать, если это так.

class Human
{
    int age;
    int height;

    public static void main2()
    {
        String eye_colour="Blue";
    }

}
class Tobi_Brown 
{
    public static void main()
    {


Tobi_Brown a=new Tobi_Brown();

        System.out.println("The eye colour is " + Human.main2().eye_colour);//Accessing eye_colour
    }
}

Спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

main2() является методом и может возвращать только одно значение определенного типа или ничего. Все остальное теряется после завершения метода. В настоящее время ваш тип возврата - void, поэтому ничего не возвращается. Если вы измените тип возврата с void на String и вернете цвет глаз, вы можете его использовать.

public class Human {

    public static String main2() {
        String hairColor = "Red";
        String eye_colour = "Blue";
        return eye_colour;
        // hairColor is now lost.
    }

}

// In another class or the same.
public static void main(String[] args) {
    String eyeColor = Human.main2();
    System.out.println("The eye colour is " + eyeColor);
}

Имеет ли это смысл? Я бы сказал нет. Мы хотим, чтобы у каждого человека был свой цвет глаз. Итак, если у вас есть человек по имени Tobi_Brown с коричневым цветом глаз, как это можно выразить с помощью кода java?

public class Human {

    public String eyeColor;
    public int age;
    public int height;

}

// Again in another class or the same.
public static void main(String[] args) {
    Human tobiBrown = new Human();
    tobiBrown.eyeColor = "brown";
    Human sarahSora = new Human();
    sarahSora.eyeColor = "Sky blue";
    System.out.println("The eye colour is " + tobiBrown.eyeColor);
    System.out.println("The eye colour is " + sarahSora.eyeColor);
}

Обратите внимание, как tobiBrown и sarahSora оба равны Human с просто другой eye_colour. Human humanName = new Human() создает новый объект типа Human. У каждого человека могут быть свои eye_colour, age и height.

0 голосов
/ 07 марта 2020

Локальные переменные доступны внутри блока (if-else / for / while), где они объявлены. Если вы хотите использовать любые переменные, принадлежащие другим классам, вы можете использовать переменные stati c.

class Human
{
    public static String eye_color = "Blue";
    int age;
    int height;

    public static void main()
    {
    }

}

И вы можете обращаться к ним в других классах, таких как:

class Tobi_Brown 
{
    public static void main()
    {


Tobi_Brown a=new Tobi_Brown();

        System.out.println("The eye colour is " + Human.eye_colour);//Accessing eye_colour
    }
}
...