我试图在我的actor类中获取print方法来打印出的String 内置在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();
}
我一直试图让这个工作很长一段时间无济于事。
答案 0 :(得分:4)
以下是您遇到麻烦的两个部分:
首先,正如其他人所提到的,你不能只运行一个方法,因为它是在你的类中声明和定义的。实际上,您需要通过main方法直接或间接调用它。主要方法是这样写的:
public static void main(String[] args) {
// Do Stuff
}
其次,你必须了解静态和非静态的含义。这意味着,您必须了解类和对象之间的区别。
Classes 是蓝图。它们描述了如何构建特定类型的对象,它具有哪些属性(或字段),以及可以从中调用哪些方法。
Objects 是类声明的对象的实际实例。可以这样想:一个类就像智能汽车的蓝图。对象是智能汽车本身。
现在,静态与非静态。
静态意味着它属于类(蓝图),而不是属于实际对象。您会注意到, 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.
}
}
答案 1 :(得分:1)
您正在尝试从您的班级主体调用print()。相反,写一个主方法并从那里打印:
public static void main(String[] args) {
Actor a = new Actor(...);
a.print();
}
答案 2 :(得分:1)
您应该有一个主要功能让程序运行,如:
删除最后一行print()然后创建一个新文件调用Main.java,写
package yourPackage // put them into the same package,
main class can call actor class
public class Main{
public static void main(String[] args) {
actor a = new actor();
a.print();
}
}
答案 3 :(得分:1)
为什么需要print()
方法?你可以使用 -
Actor a = new Actor(...);
System.out.println(a);
这将隐式执行toString()
方法
答案 4 :(得分:0)
理想情况下,你应该这样做。由于toString()方法的目的是为对象提供有意义的String表示。
actor actorObj = new actor();
System.out.println(actorObj );
答案 5 :(得分:0)
在课堂主体上调用print();
无效。删除以下方法调用。
print();
答案 6 :(得分:0)
首先,您应该从其他地方调用print()
方法(例如main
)。即使这样,您也会遇到错误:您正在调用toString()
方法(没有参数,这是从Object类中获取的)。只需从toString
方法中删除参数即可覆盖该参数。它无论如何都可以看到自己类的字段。有了这个,您可以执行以下操作,并利用Java的默认toString调用:
public static void main(String[] args) {
System.out.println(new Actor("Bob", "410 Main Street", 42);
}
答案 7 :(得分:0)
Java不允许您在类的主体中调用方法,因为您尝试使用print();
代码行。您必须将调用打印到另一个方法中。例如
public static void main(String[] args) {
actor a = new actor();
a.print();
}
答案 8 :(得分:0)
通过向您的类添加main方法并在该方法中使用Actor的构造函数,您可以创建一个Author对象。在此Author对象上调用print()。
TJamesBoone给出了一个非常好的答案,让你了解真正发生的事情。按照他的回答,它会按你的意愿做。
答案 9 :(得分:0)
这是你的代码..编译并运行.. 公共阶层演员{
Distinct()
答案 10 :(得分:0)
简单,因为它.... 一旦在类中编写toString()方法,然后执行另一个名为print()的方法,并在print()方法内调用toString()方法。
public void print()
{
System.out.println(toString());
}