我试图在我的 actor 类中获取打印方法来打印字符串 内置在 toString() 方法中。但是我不断收到错误消息。 (无效的方法声明,需要返回类型)
public class actor {
private String name;
private String address;
private int age;
public actor(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public void setName (String name) {
this.name = name;
}
public void setAddress (String address) {
this.address = address;
}
public void setAge (int age) {
this.age = age;
}
public void setFilm () {
}
public String getName () {
return name;
}
public String getAddress () {
return address;
}
public String toString (String name, int age, String address){
return name+" who's "+age+" and lives in "+address;
}
public void print (){
String a = toString();
System.out.println(a);
}
print();
}
我已经尝试了很长一段时间但无济于事。
最佳答案
这是您遇到的问题的两个部分:
- 为了运行您的程序,您必须有一个 main 方法。
- 您必须了解静态和非静态的含义。
首先,正如其他人所提到的,您不能只运行一个方法,因为它是在您的类中声明和定义的。您实际上需要通过 main 方法直接或间接调用它。主要方法是这样写的:
public static void main(String[] args) {
// Do Stuff
}
其次,你要明白静态和非静态是什么意思。这意味着,您必须了解类和对象之间的区别。
类 是蓝图。它们描述了如何构建特定类型的对象、它具有哪些属性(或字段)以及可以从中调用哪些方法。
对象 是类声明的对象的实际实例。可以这样想:类就像智能汽车的蓝图。对象是智能汽车本身。
那么现在,静态与非静态。
Static 表示它属于类(蓝图),而不属于实际对象。您会注意到,main 方法是静态的。它属于它在其中声明的类,而不属于任何实例对象。这意味着,在其自身之外,main 方法只知道它所在的类,以及该类中的任何其他静态方法或对象。非静态的东西属于从类创建的实际对象——并且 main 方法对这些实际对象一无所知,除非它们是在 main 方法本身内部创建的。
所以,这样的事情是行不通的:
public class StuffDoer {
public void doStuff {
System.out.println("Doing Stuff");
}
public static void main(String[] args) {
doStuff(); // Won't work!
// You can't call a non-static, instance method in a static method!
}
}
相反,您可以先在 main 方法中创建类的新实例对象,然后从实例对象调用非静态实例方法:
public class StuffDoer {
public void doStuff {
System.out.println("Doing Stuff");
}
public static void main(String[] args) {
new StuffDoer().doStuff(); // This will work,
// because now you have an instance to call the instance method off of.
}
}
这通常不是一个好的选择,但也可以:
public class StuffDoer {
public static void doStuff { //Now, we make this method static
System.out.println("Doing Stuff");
}
public static void main(String[] args) {
doStuff(); // This will work now, because this method is static.
}
}
关于Java 打印方法在类里面不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980913/