我想首先为糟糕的头衔道歉。我知道标题可以改进,但我不知道这个术语是否合适。欢迎提供标题帮助。
关于我的问题,我很好奇我是否可以从“朋友”中拨打方法。类。我不确定如何解释我的问题,所以我希望这段代码有所帮助。
public class Main {
public static void main(String args[]) {
int friends = 0;
while(friends < 3) {
new Friend().talk("Hello");
friends ++;
try {
Thread.sleep(500);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
// How do I call the 'goodbye()' method from one of the 'Friend' classes?
}
}
朋友班:
public class Friend {
int talk = 0;
public Friend() {
}
public void talk(final String word) {
Thread speech = new Thread() {
public void run() {
while(talk < 5) {
System.out.println(talk + ": " + word);
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
talk ++;
}
}
};
speech.start();
}
public void goodbye() {
talk = 5;
}
}
如果我创建了类似于上面显示的类对象,请告诉我是否可以从类中调用方法。另外,如果有人能告诉我从我所展示的类中调用方法的正确术语,那将是一个巨大的帮助。提前谢谢!
答案 0 :(得分:2)
在main
方法中,创建Friend
类
Friend f=new Friend();
然后调用它的方法
f.talk("Hello");
f.goodbye();
...
这样做你将指的是同一个对象。在你的情况下,这就是你得到的
public static void main(String args[]) {
int friends = 0;
Friend f = new Friend();
while (friends < 3) {
f.talk("Hello");
friends++;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
f.goodbye();
}
答案 1 :(得分:1)
您了解#ifdef DEBUG
<debug code added here>
#endif
字段和方法吗?可以在没有实例化的情况下调用它们。定义类似
static
然后,在您的main方法中,您可以将其简单地称为
public class Friend {
public static void sayHello() {
System.out.println("Hello");
}
}
这是在未在Java中实例化的类上调用方法的示例。进一步阅读 - Understanding Class Members
答案 2 :(得分:1)
如果静态不是您正在寻找的,我倾向于相信,因为您的评论及其在代码中的位置
如何从'Friend'类中调用'goodbye()'方法?
那么你的问题就是你真正在实例化对象的意义上的误导。在这个例子中,我创建了Friends并将它们存储在一个数组中。
public static void main(String args[]) {
int count = 0;
//you can store reference to Friend in an array
Friend[] friends = new Friend[3];
//in the loop, you make 3 new Friends
while (count < 3) {
friends[count] = new Friend();
count++;
}
//Since they're instantiated and stored in the array, you can call their methods later
friends[0].goodbye();
//or
friends[1].goodbye();
//or
friends[2].goodbye();
}
答案 3 :(得分:0)
在Java中创建对象的不同方法
这是在Java中创建对象的最常用方法。
Friend f = new Friend();
f.talk("Hello");
Friend类有一个公共默认构造函数,因此您可以通过这种方式创建对象。
Friend f = (Friend) Class.forName("Friend").newInstance();
clone()可用于创建现有对象的副本。
Friend anotherF = new Friend();
Friend f= anotherF.clone();
对象反序列化只不过是从序列化形式创建一个对象。
ObjectInputStream inStream = new ObjectInputStream(anInputStream );
Friend f= (Friend) inStream.readObject();
您可以使用它们中的任何一个来创建对象,然后调用该方法。