У меня возникли проблемы с доступом к String из другого класса, и я понятия не имею, насколько проще я могу это сделать. Например, у меня есть класс под названием «Человек», и у меня есть имя String. Я устанавливаю «имя» для имени через конструктор, а также напрямую. И у меня есть еще один класс под названием «Кредит», который я еще не пытаюсь получить. Мой последний класс называется «App», и здесь все делается.переменная доступа java от другого класса
Btw - Person - мой суперкласс, а Loan продлевает личность, а приложение расширяет кредит, и все они находятся в одном пакете.
Теперь в моем классе App я попытался получить доступ к строковому «имени» для ТОЛЬКО объекта, который я создал. И снова я назначил имя через конструктор и прямо, но так или иначе не работает. И изначально у меня было установлено, что мой набор имен защищен, потому что, как я его понимаю: protected = методы доступа/переменные в том же классе, том же пакете или подклассе И даже после того, как я опубликовал свою публикацию String, она STILL не работает. Я полностью потерял ....
когда я типа
System.out.println(omid.name);
он говорит, что не может быть разрешен к переменной, и мне нужно, чтобы сделать местный один.
Спасибо!
Вот мой код для лица:
package Programs;
public class Person {
public String name;
protected int age;
protected int id;
protected String status;
protected int alienNumber;
protected int socialSecurityNumber;
Person()
{
}
Person(String name, int age, int id)
{
this.name = name;
this.age = age;
this.id = id;
}
public void setid(int id)
{
if(id >= 100000)
{
this.socialSecurityNumber = id;
System.out.println("You are now a citizen " + name);
System.out.println("Social Security Number: " + socialSecurityNumber);
}
else
{
System.out.println("Sorry " + name + " you do not meet the qualitifactions for citizenship");
alienNumber = id;
System.out.println("You alien number is: " + alienNumber);
}
}
public String toString()
{
if(id >=99000)
{
status = "citizen";
}
else
{
status = "immigrant";
}
return "Name: " + name +
"Age: " + age +
"Id: " + id +
"Status " + status;
}
public static void main(String[] args)
{
Person omid = new Person("omid nassir", 28, 120000);
omid.name = "omid";
}
}
Код для займа
package Programs;
import Programs.Person;
public class Loan extends Person{
public static final int LOANAMOUNT1 = 250000;
public static final int LOANAMOUNT2 = 500000;
public static final int LOANAMOUNT3 = 750000;
public static final int LOANAMOUNT4 = 1000000;
public int income;
public int loanRequested;
Loan(int income, int socialSecurityNumber, int loanRequested)
{
this.income = income;
this.socialSecurityNumber = socialSecurityNumber;
this.loanRequested = loanRequested;
}
public void applyForLoan(String name, int socialSecurityNumber, int income, int loanAmount)
{
int obtainable = LOANAMOUNT1/4;
if(socialSecurityNumber >= 99999)
{
if(income > obtainable)
{
obtainable = loanAmount;
System.out.println("Congradulations " + name + " you are eligible for loan amount of " + loanAmount);
}
}
else if(socialSecurityNumber <=99999)
{
obtainable = LOANAMOUNT1;
System.out.println("Sorry " + name + " in order to qualify for " + loanAmount + " you need to be"
+ " a citizen and have a minimum income of " + obtainable);
System.out.println("Loan amount granted: " + LOANAMOUNT1);
}
}
}
Код для App
package Programs;
public class App extends Person {
public static void main(String[] args)
{
System.out.println(omid.name);
}
}
У вас есть 2 'main (String [] args)' methods (в приложении и Person). Я не уверен, что вы пытаетесь сделать, но вам нужно только 1 – grebesche
«Приложение» расширяет «Лицо», поэтому строка «name» должна быть унаследована. Таким образом, вы можете получить к нему доступ, как при доступе к локальным переменным. 'System.out.println (name);' Кроме того, если «omid» является другим «Лицом». Но в вашем случае у вас есть только 1 человек, поэтому он должен работать только с именем 'name' вместо« omid.name » – HyperZ
Когда класс App расширяет Person, это не значит, что в App.main() у вас будут вещи, которые вы созданный в Person.main() –