1

我有一个 java 代码,我试图通过将类的对象传递给函数来打印语句。以下是代码:

import java.io.*;

class Abc
{

    public static void print(Object o)
    {
       o.name();
    }

    public static void main(String args[])
    {
       Vendor obj=new Vendor();
       print(obj);
    }
}

class Vendor
{
    public void name()
    {
       System.out.println("The name of the customer is chandeep");
    }

}

我得到的错误是,在 Abc 类中找不到符号名称()。我知道这是一个适当的错误,但我该如何解决它!?

4

3 回答 3

6

它不起作用,因为Objectclass 没有这样的方法name(),并且您试图在 type 的引用上调用它Object

只需更改方法签名以将Vendor引用作为参数:-

public static void print(Vendor vendor) {
     vendor.name();
}

由于您的方法name()Vendor类中,并且您正在传递 的引用Vendor,因此您不需要Object在方法中用作形式参数。

于 2012-11-21T18:29:06.670 回答
1

因为方法的参数print()是 typeObject而不是 type Vendor。所以它期待任何类型的实例Object,它没有方法name()。实际实例当然可能会扩展Objectname()添加到方法列表中,但编译器无法知道这一点。

如果您希望该print()方法只接受Vendor,只需将参数从 更改ObjectVendor。如果您希望它接受不同的对象,那么您需要一种稍微复杂的面向对象的方法。

于 2012-11-21T18:32:18.130 回答
-2

如果您知道 o 是 Vendor,则将其转换为 Vendor 类型或将参数类型重写为 Vendor 而不是方法定义中的通用 Object

于 2012-11-21T18:30:10.843 回答