Java 打印方法在课堂上不起作用

Ano*_*mus 1 java oop methods class

我试图在我的演员类中获取打印方法来打印在 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();
}
Run Code Online (Sandbox Code Playgroud)

我一直试图让这个工作很长一段时间都无济于事。

Jam*_*unn 5

这是您遇到的麻烦的两个部分:

  1. 为了运行你的程序,你必须有一个 main 方法。
  2. 您必须了解静态和非静态的含义。

首先,正如其他人所提到的,您不能只运行一个方法,因为它是在您的类中声明和定义的。您实际上需要通过 main 方法直接或间接调用它。主要方法是这样写的:

public static void main(String[] args) {
    // Do Stuff
}
Run Code Online (Sandbox Code Playgroud)

其次,您必须了解静态和非静态的含义。这意味着,您必须了解类和对象之间的区别。

是蓝图。它们描述了如何构建特定类型的对象、它具有哪些属性(或字段)以及可以从中调用哪些方法。

对象是类声明的对象的实际实例。可以这样想:类就像智能汽车的蓝图。对象是智能汽车本身。

所以现在,静态与非静态。

静态意味着它属于类(蓝图),而不是实际的对象。的主要方法,你会发现,是静态的。它属于它所声明的类,而不是任何实例对象。这意味着,在其自身之外,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!
    }
}
Run Code Online (Sandbox Code Playgroud)

相反,您可以首先在 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.
    }
}
Run Code Online (Sandbox Code Playgroud)

这通常不是一个好的选择,但也可以工作:

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.
    }
}
Run Code Online (Sandbox Code Playgroud)