Чтобы разделить переменные между классами, существует три способа:
public class Human {
// instance variables
public String name;
public int age;
//constructor, creates an instance of the Human class.
public Human(String s, int i){
name = s;
age = i;
}
}
в этом случае ваши переменные экземпляра являются общедоступными. так в другом классе, при создании экземпляра класса человека по телефону:
Human aHuman = new Human(tom, 25);
, то вы можете получить доступ к двум переменным экземпляра напрямую. вы можете получить его значение с помощью:
String theHumanName = aHuman.name;
и вы можете установить его значение (изменить) с помощью:
aHuman.name = "mike";
две эти строки будут работать, только если переменные являются общедоступными. Причина, по которой вы должны сделать их конфиденциальными, заключается в том, чтобы не изменять значения извне класса. Поэтому, если они являются частными, вы создаете методы получения и установки, в зависимости от необходимости. Вот как это должно быть сделано:
public class Human {
// instance variables
private String name;
private int age;
//constructor, creates an instance of the Human class.
public Human(String s, int i){
setName(s);
setAge(i);
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
в настоящее время из-за пределов класса, вы можете позвонить:
String theHumanName = aHuman.getName(); // this a method call, therefore you must have the parentheses
и вы можете установить его значение (изменить) с помощью:
aHuman.setName("mike");
Является ли другой класс подклассом? Кроме того, следуйте соглашениям о присвоении имен Java ('name'). –
Ну, если вы _extend_ этот класс из другого класса, все переменные будут доступны. Фактически, поскольку вы сделали переменные «public», они доступны в любом месте. –
Это не имеет смысла: вы получаете доступ к информации от * объектов * не от классов, а тем более от абстрактных классов. Ваш вопрос пахнет проблемой [XY] (http://mywiki.wooledge.org/XyProblem), где вы спрашиваете, как решить конкретную проблему с кодом, когда лучшим решением является использование совершенно другого подхода. Подумайте о своей проблеме немного больше, а затем расскажите нам подробности о том, что именно вы пытаетесь сделать, а не как вы пытаетесь ее решить. –