将对象作为参数传递

时间:2012-11-21 18:28:00

标签: java function object

我有一个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中找不到符号名称()。我明白这是一个合适的错误,但我该如何解决呢!?

3 个答案:

答案 0 :(得分:6)

它不起作用,因为Object类没有name()这样的方法,并且您尝试在Object类型的引用上调用它。

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

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

由于您的方法name()位于Vendor类,并且您传递了Vendor的引用,因此您无需使用Object作为正式参数你的方法。

答案 1 :(得分:1)

因为方法print()的参数属于Object类型而不属于Vendor类型。所以它期望任何类型Object的实例,它没有方法name()。实际的实例当然可以扩展Object并将name()添加到方法列表中,但编译器无法知道。

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

答案 2 :(得分:-2)

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