当我编译它时,我收到一条错误消息,指出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" );
}
}
工作正常。我没有看到差异。这里有什么不对吗?...
答案 0 :(得分:4)
void Video ( String d , int p, String t)
这不是constructor。这就是编译器抱怨的原因:它无法找到构造函数Video(String, int, String)
,因为代码中没有它。删除void
会将其变为一,因为方法需要返回值,而构造函数则没有。
(更多)更具信息性的讨论是here。
答案 1 :(得分:0)
void Video ( String d , int p, String t) is a method not a constructor.
Constructor's
没有返回类型甚至无效。
现在,这是一个构造函数:
Video ( String d , int p, String t)