Java 打印方法在类里面不起作用

标签 java class oop methods

我试图在我的 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();
}

我已经尝试了很长一段时间但无济于事。

最佳答案

这是您遇到的问题的两个部分:

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

首先,正如其他人所提到的,您不能只运行一个方法,因为它是在您的类中声明和定义的。您实际上需要通过 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/

相关文章:

java - 当我测试使用 SecretKeyFactory 对密码进行哈希处理的程序时,它总是返回密码不相同

2个类之间的Java Action 监听器

c++ - 应该如何构建基本的类层次结构?

java - 在以下情况下使用 DecimalFormat

java - 泛型类型的实例化?

javascript - 我应该如何处理包含其他 javascript 对象的 javascript 对象中的 'this'?

c++ - 从构造函数体调用父类(super class)构造函数

oop - 实现类似的用例看起来像代码重复

java - 为什么在使用 JPA 执行基本 mySQL 搜索时会出现此错误?

c# - 访问 C# 类中的变量是否会从内存中读取整个类?