0

当我编译这个时,我收到一条错误消息,说 Video 的预期构造函数参数是“无参数”

import java.util.*;

abstract class Thing
{

}

class Video extends Thing
{
    String description;
    int price;
    String title;

    void Video ( String d , int p, String t)
    {
        this.description = d;
        this.price = p;
        this.title = t;
    }

    String getDescription()
    {
        return description;
    }
}

class BookOnTape extends Thing
{
    String description;

    void BookOnTape ( String d )
    {
        description = d;
    }

    String getDescription()
    {
        return description;
    }
}

class Funiture extends Thing
{
   String description;

    void Furniture ( String d )
    {
        description = d;
    }

    String getDescription()
    {
        return description;
    }
}

public class Lookup
{
    /*private static HashMap<Thing, Integer> rentalList;

    static
    {
        rentalList = new HashMap<Thing, Integer>();
        rentalList.put( new Video(5), new Integer( 0 ) );
    }*/

    public static void main( String args[] )
    {
        System.out.println("fart");

        Thing farmer = new Video( "fgfg", 5, "gfgf" );
    }
}

当我编译这个:

class A
{
}

class B extends A
{
    String name;

    B ( String n )
    {
        this.name = n;
    }
}


class TestPoly
{
    public static void main( String args[] )
    {
        A poly = new B( "test" );
    }
}

它工作正常。我看不出有什么区别。这里有什么问题吗?...

4

2 回答 2

4
void Video ( String d , int p, String t)

这不是构造函数。这就是编译器抱怨的原因:它找不到构造函数Video(String, int, String),因为它不在代码中。删除void会将其变成一,因为方法需要返回值,而构造函数没有返回值。

一个(更多)信息量更大的讨论在这里

于 2013-03-07T22:53:20.047 回答
0
void Video ( String d , int p, String t) is a method not a constructor. 

Constructor's没有返回类型甚至无效。

现在,这是一个构造函数:

 Video ( String d , int p, String t)
于 2013-03-07T22:53:29.823 回答