2012-11-25 46 views
2

我有4個班。一個是驅動程序類,一個是接口和兩個子類。這是接口類:執行不起作用

public interface Speaker { 
    public void speak(); 
    public void announce(String announcement); 
} 

這是驅動器類:

public abstract class SpeakerDriver implements Speaker { 
    public static void main (String [] args) { 
     Speaker ref; 
     Politician poli = new Politician("George Bush"); 
     Lecturer lect = new Lecturer("Professor Cross"); 
     Pastor past = new Pastor ("P.M. Smith"); 

     ref = poli; 
     ref = lect; 
     ref = past; 

     System.out.println(); 
     System.out.println(lect); 
     System.out.println(past); 
    } 
} 

,這些都是兩個子類:

public class Pastor implements Speaker { 
    protected String announcement; 

    public Pastor (String name) {  
    } 

    @Override 
    public void speak() { 
    } 

    @Override 
    public void announce(String announc) { 
     System.out.println("I am the pastor at CCBC."); 
    } 
} 

public class Lecturer implements Speaker { 
    protected String announcement; 

    public Lecturer(String name) { 
    } 

    @Override 
    public void speak() { 
    } 

    @Override 
    public void announce(String announcement) {  
     System.out.println("I am the lecturer at CCBC");  
    } 
} 

我的問題是,什麼是錯的我實現使得輸出如下所示:

 
[email protected] 
[email protected] 

當它們應該包含println中的文本時。

+0

看到一個參數被傳遞給'announce'然後丟在地板上有點奇怪。我知道這是一個接口要求,但是這應該強制你以某種方式使用該參數......並且,'announce'不會返回'String'有點怪異。只是在說'。 – Makoto

+0

你不給演講者一個名字,因爲你沒有在構造函數中保存它們的值。這樣你可以覆蓋'toString()'。 – Mordechai

回答

2

你只需要在每個子類中實現一個toString()方法。

public String toString() { 
    return this.name; 
} 

類似的東西。 print()調用此方法返回一個字符串。

編輯:忽略,沒有讀取結束位。

+0

你的意思是'this.name' ... – Mordechai

+0

確實。最近太多的python。謝謝 –

+0

這個.name究竟是什麼?我在添加setter和getter方法後將其更改爲返回通告。 – brennaboo

5

要打印的這條語句的對象:

System.out.println(lect); 

你可能意味着在對象上調用一個函數:

lect.announce(); 

另外請注意,您的驅動程序類實際上並不需要實現'揚聲器'界面以及以下聲明中,前兩項實際上什麼也沒有做到:

ref = poli; 
ref = lect; 
ref = past; 
0

要解決此問題,您需要重寫每個類中的toString()方法,該輸出是對象的地址和類型,因爲Java不知道如何將其轉換爲字符串。看起來你可能打算調用{object} .announce()而不是試圖打印對象。