Как обратиться к переменной из другого класса java
Перейти к содержимому

Как обратиться к переменной из другого класса java

  • автор:

Статические переменные

Статические переменные Java, объявляются внутри класса с ключевым словом static . Такие переменные, по существу, являются глобальными переменными. При объявлении объектов, копии статических переменных не создаются — создается одна статическая переменная на весь класс. Статическая переменная создается при загрузке класса.

Рассмотрим различие между обычными и статическими переменными на следующем примере. Для обращения к обычной переменной а , необходим объект класса StaticVars . К переменной b можно обращаться без упоминания объекта и даже без упоминания класса (если обращение происходит из того же класса):

public class StaticVars < int a; static int b; public static void main(String[] args) < StaticVars staticVars = new StaticVars(); System.out.println(staticVars.a); System.out.println(b); >> 

При обращении к статической переменной из другого класса, необходимо указать имя ее класса — StaticVars.b . Можно обратиться к статической переменной используя любой объект того же класса, например — staticVars1.b или staticVars2.b . Но такой вариант не рекомендуется, так как пользователь вашего кода может решить, что это обычная переменная.

public class StaticVarsDemo < public static void main(String[] args) < StaticVars staticVars1 = new StaticVars(); StaticVars staticVars2 = new StaticVars(); System.out.println(StaticVars.b); System.out.println(staticVars1.b); staticVars1.b = 3; staticVars2.b = 4; System.out.println(staticVars1.b); System.out.println(staticVars2.b); >> 

Результат выполнения кода:

0 0 4 4

Рассмотрим классический пример, демонстрирующий использование статических переменных для подсчета количества созданных объектов класса Ball . Для этого определим в классе статическую переменную count , которая и будет содержать количество созданных объектов. При создании объекта всегда вызывается конструктор, поэтому именно там будем увеличивать переменную count . Для доступа к private переменной count определен метод getCount() :

public class Ball < static int count = 0; String color = "none"; public Ball(String color) < this.color = color; count++; >>
public class BallDemo < public static void main(String[] args) < Ball ball1 = new Ball("красный"); Ball ball2 = new Ball("голубой"); System.out.println("Количество созданных объектов: " + Ball.count); >>

Результат выполнения кода:

Количество созданных объектов: 2

Как обратиться к переменной другого класса

Здравствуйте! Подскажите пожалуйста: как обратиться к переменной из одного класса находясь в другом? Вот пример:
Имеем класс Cat:

public class Cat extends Animal public Cat(String name, String type, String voice, int age, int speed) super(name, type, voice, age, speed);
>

public static void main() Cat cat1 = new Cat(«Murka «, «Cat «, «Myuu «, 5, 25);
System.out.println(cat1.name+cat1.type+cat1.voice+cat1.age+cat1.speed);
>

>
Он наследуется от класса Animal:

public class Animal String name;
String type;
String voice;
int age;
int speed;

public Animal(String name, String type, String voice, int age, int speed) this.name = name;
this.type = type;
this.voice = voice;
this.age = age;
this.speed = speed;
>
>, что в данном случае, как понимаю, никакого значения не имеет.

А вот теперь еще есть класс Dog. И я в нем хочу вызвать cat1.name. Как мне это сделать? Метод Cat.main я могу вызвать, а как обратиться к cat1.name и вообще cat1 параметрам?
public class Dog public static void main(String[] args) Cat.main();
>
>

Спасибо за помощь.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как обратиться к переменной из другого класса?
Как получить значение spinnerOfHeight package net.net78.zarsite; import.

Обратиться и изменить переменную из другого класса
Подскажите, как можно поменять переменную из другого класса? Мне уже сказали что это можно сделать.

Вызов переменной из другого класса
Всем привет, я захотел сделать элементарный кукулятор, и я джавой занимаюсь около недели, так вот.

164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301

Лучший ответ

Сообщение было отмечено Rudy_SRF как решение

Решение

Ниже показано четыре способа добраться до полей класса Cat.
Самый верный через методы класса Animal/Cat.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
public class Animal { String name; String type; String voice; int age; int speed; public Animal(String name, String type, String voice, int age, int speed) { this.name = name; this.type = type; this.voice = voice; this.age = age; this.speed = speed; } public String getName() { return name; } public String getType() { return type; } public String getVoice() { return voice; } public int getAge() { return age; } public int getSpeed() { return speed; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class Cat extends Animal { public static Cat cat1Clone; public Cat(String name, String type, String voice, int age, int speed) { super(name, type, voice, age, speed); } public static Cat getCat() { Cat cat1 = new Cat("Murka ", "Cat ", "Myuu ", 5, 25); return cat1; } public static void main() { Cat cat1 = new Cat("Murka ", "Cat ", "Myuu ", 5, 25); cat1Clone = cat1; System.out.println(cat1.name + cat1.type + cat1.voice + cat1.age + " "+cat1.speed); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public class Dog { public static void main(String[] args) { // если мы хотим обратиться к полю объекта Cat Cat cat2 = new Cat("Lapka ", "Cat ", "Murr ", 3, 16); System.out.println("Cat2: " + cat2.name + " " + cat2.type + " " + cat2.voice + " " + cat2.age + " " + cat2.speed); // если нам нужна cat1 созданная классе Cat Cat cat3 = Cat.getCat(); System.out.println("\nCat3: " + cat3.name + " " + cat3.type + " " + cat3.voice + " " + cat3.age + " " + cat3.speed); // если мы хотим именно к оригинальной cat1 которая создана в методе System.out.print("\nRun Cat.main(): "); Cat.main(); // создали внутри функции cat1 и заполнили cat1Clone Cat cat4 = Cat.cat1Clone; System.out.println("\nCa1Clone: " + cat4.name + " " + cat4.type + " " + cat4.voice + " " + cat4.age + " " + cat4.speed); // доступ через методы класса Animal/Cat Cat cat5 = new Cat("Simka ", "Cat ", "Mooo ", 2, 21); System.out.println("\nCat5: " + cat5.getName() + " " + cat5.getType() + " " + cat5.getVoice() + " " + cat5.getAge() + " " + cat5.getSpeed()); } }

Как обратиться к переменной класса java

Для обращения к переменной класса в Java используется имя объекта и оператор точка ( . ), за которым следует имя переменной. Например, если у вас есть класс Person с переменной name , то для обращения к ней нужно создать объект класса Person и затем использовать оператор точка:

public class Person  String name; public Person(String name)  this.name = name; > > public class Main  public static void main(String[] args)  Person person = new Person("Alice"); System.out.println(person.name); // => "Alice" > > 

Обратите внимание, что переменная name в классе Person объявлена без модификатора доступа, что означает, что она доступна только в пределах пакета. Если вы хотите, чтобы переменная была доступна из других классов, нужно использовать модификаторы доступа public или protected (в последнем случае переменная за пределами пакета будет доступна только наследникам класса)

Как использовать переменную из другого класса java

Если переменная объявлена public , то мы можем получить к ней доступ напрямую, указав имя через точку после имени объекта класса.

Если переменная объявлена private , то необходимо вызвать геттер этой переменной.

class Friend  public String name; private String mail; public Friend(String name, String mail)  this.name = name; this.mail = mail; > public String getMail()  return mail; > > public class App  public static void main(String[] args)  Friend friend = new Friend("Ivan", "Ivan@mail.ru"); System.out.println(friend.name); // => Ivan System.out.println(friend.getMail()); // => Ivan@mail.ru > > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *