多个类基础知识,将print类放入main方法中

时间:2013-12-28 13:17:36

标签: java oop

我正在尝试查看在第二课中调用所需内容的基础知识,因为我正在使用的教程和书籍现在使用用户输入过于复杂。

所以这就是我的尝试。首先是我的主类,第二个是我试图调用主要方法描述一个简单文本的类。

public class deck {
    public static void main(String[] args) {
    edward test = new edward();
    System.out.print(test);
    }
}

其他课程:

public class edward {
    public void message(int number) {
        System.out.print("hello, this is text!");   
    }
}

为什么这不起作用?

如果你可以试着解释一下我在做什么,或者它是如何工作的,那将是一件好事。我对这部分感到很难,并且有点气馁。

3 个答案:

答案 0 :(得分:5)

这不起作用,因为你打印错误的东西:而不是打印test,你应该在上面调用一个方法,如下所示:

public class deck {
    public static void main(String[] args){
        edward test = new edward();
        test.message(123);
    }
}

message(int)是一种方法(更具体地说,是实例方法)。您可以通过指定要在其上调用方法的实例(在您的情况下,即test),方法的名称及其参数来调用实例方法。

另一种方法是static - 即像main。这些方法不需要实例,但它们也无法访问实例属性。

答案 1 :(得分:4)

只是一个额外的提示。

Java中的每个类都派生自“Object”类中的java。

这个普通类提供了一些常用的方法。

在你的情况下,方法

public String toString()

非常感兴趣。

您可以在类edward中覆盖此方法并返回所需的字符串。

public class edward {

    @override
   public String toString() {
        return "hello, this is text!"

   }

}

如果您现在在主方法中使用类edward(test)t的对象,就像在示例代码中那样使用

    public static void main(String[] args) {
          edward test = new edward();
          System.out.println(test);
    }

然后打印出覆盖toString()方法的文本returnrd。 在这种情况下,您可以使用超类(Object)和子类(edward)覆盖方法。

通常,您将使用toString nethod输出对象的字段(属性)的值以显示其当前状态。

如果你没有覆盖toString方法,你会得到一个像@ ae23da这样的字符串,它表示内存中对象测试的当前地址。

答案 2 :(得分:3)

public class deck
{
    public static void main(String[] args)
    {
        edward test = new edward(); //1
        System.out.print(test); //2
    }
}

在第1行中,您可以创建一个名为edward的新test对象 在行2中,您print对象本身。根据{{​​3}},print(Object)

  

打印一个对象。 String.valueOf(Object)方法生成的字符串根据平台的默认字符编码转换为字节,这些字节的编写方式与write(int)方法完全相同。

我猜测输出看起来像:edward@672563。这是因为String.valueOf(obj)返回objedward)的类型,后跟字符@,后跟obj内存位置(672563)


以下是一些应该执行您尝试的代码:

public class Deck //all class names should be capitalized
{
    public static void main(String[] args)
    {
        Edward test = new Edward();
        test.message(); //1
    }
}

public class Edward
{
    public void message() //`message` doesn't need a parameter
    {
        System.out.print("hello, this is text!");
    }
}

1行中,您可以调用test的方法message()。调用方法会执行该方法中的代码,因此test.message()执行行

System.out.print("hello, this is text!");

这是做同样事情的另一种方式:

public class Deck
{
    public static void main(String[] args)
    {
        Edward test = new Edward();
        System.out.println(test.message); //1
    }
}

public class Edward
{
    public String message = "hello, this is text!"; //2
}

在第2行中,您创建了一个新的String“字段”,其值为"hello, this is text!"。 在第1行中,您可以打印对象message中包含的字段test的值。

如果您不理解此代码的其他部分,请随时对此答案发表评论!