2013-03-07 41 views
0

當我編譯,我得到一個錯誤信息說視頻有望構造函數參數「不爭論」多態性:構造不會接受參數

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
void Video (String d , int p, String t) 

這不是constructor。這就是編譯器抱怨的原因:它找不到構造函數Video(String, int, String),因爲它不在代碼中。刪除void會將它變成一個,因爲方法需要返回值,而構造函數不具有返回值。

(更多)更多信息性討論是here

0
void Video (String d , int p, String t) is a method not a constructor. 

Constructor's沒有返回值類型甚至無效。

現在,這是一個構造函數:

Video (String d , int p, String t) 
相關問題