在班级" CheckingAccount.java"我正在尝试使用以下内容:
public String accountNumber(){
String date = Account.date;
String name = Customer.name;
String account = date + ", " + name;
return account;
}
使用Account.java类中的方法
public String date(Locale currentLocale){
DateFormat df;
df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, currentLocale);
String formattedDate = df.format(getDateOpened());
String date = "Opened: " + formattedDate;
return date;
}
和Customer.java类
public String name(){
String name = "Name: " + getName();
return name;
}
但是,CheckingAccount.java中的方法无法看到Account.date或Customer.name,而且我不确定我在这里做错了什么。
编辑:好的,要清楚,我不是要调用该方法。我试图在方法中调用变量。我也不想在这里创建新对象。这些对象将在另一个类中创建,并且只需要能够在那时访问变量。
答案 0 :(得分:1)
name
和date
是实例方法 - 您需要Account
和Customer
的实例才能访问它们,即:
public String accountNumber() {
String date = new Account().date();
String name = new Customer().name();
String account = date + ", " + name;
return account;
}
然而,似乎更像是在尝试以静态方式使用它们,这意味着它们必须是静态的(对于所有出现的Account
和Customer
都是通用的),意思是:
public static String date(Locale currentLocale) {
DateFormat df;
df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, currentLocale);
String formattedDate = df.format(getDateOpened());
String date = "Opened: " + formattedDate;
return date;
}
public static String name() {
String name = "Name: " + getName();
return name;
}
但请注意,在这种情况下,他们尝试访问的任何变量或方法也必须是静态的。如果没有更多关于您的用例的说明,我不知道您应该采用哪种方式。
答案 1 :(得分:1)
简短回答,
在该方法之外的任何地方都无法访问方法内的变量。
为了澄清您的疑虑,让我帮助您了解Java中的变量。
基本上你可以有三种类型的变量。
实例变量是在类级别(在方法之外)声明的那些,它们只能由该类的Object / Instance使用。
例如,
class A{
int a; // this a variable is an instance variable.
}
要在任何其他类中使用此变量,您需要执行类似的操作,
A obj = new A();
obj.a = 10;
这里需要注意的是,该类的每个对象都有自己的实例变量副本。
类变量是在类级别声明但使用static
关键字的那些。
例如,
class A{
static int b;
}
这个b
变量将是类变量,可以直接按类名使用。
A.b = 10;
无需创建对象来访问此变量。类变量与对象无关。相反,它们对于所有对象都是通用的。
局部变量是在任何方法或任何其他块中声明的变量。
它们的范围在声明它们的{ }
范围内,永远不能在该块之外使用。
例如,
class A{
public void hello(){
int a; //local variable
// it can be used here
}
// but it cannot be used outside the method
}
现在回答你的问题。你说
编辑:好的,要清楚,我不是要试着调用这个方法。我试图在方法中调用变量。
变量name
和date
是相应方法中的局部变量。因此,无法按照您尝试的方式访问它们。
相反,您需要创建类的对象,然后调用其方法
public String accountNumber() {
Account account = new Account();
String date = account.date();
String name = account.name();
String account = date + ", " + name;
return account;
}
答案 2 :(得分:0)
这不是您在Java中调用方法的方式,您必须在方法名称后添加括号以指示您正在调用方法。 此外,Customer.getName()不会起作用,因为这是Customer的实例方法。您需要创建Customer类的实例才能调用它。 您可以执行以下操作(假设Customer具有默认构造函数):
new Customer().name()
new关键字告诉java您正在尝试创建给定类的新实例,在本例中为Customer。通过该实例,您可以调用name方法。
答案 3 :(得分:0)
you need to put instance for Account class and then invoking data().same u should follow for customer class.
public String accountNumber()
{
Account account=new Account();
Customer customer=new Customer();
String date = account.date();
String name = customer.name();
String account = date + ", " + name;
return account;
}
OR you can directly calling method by creating object.like
public String accountNumber() {
String date = new Account().date();
String name = new Customer().name();
String account = date + ", " + name;
return account;
}