2014-02-07 90 views
-2

我有,例如,一個class Doctor誰想要使用class Postman的服務。對象如何使用另一個對象的方法?

它在代碼方面看起來如何?

public class Doctor 
{ 
    ... 

    void doCheckup(Patient); 
    void sendMail(){ // want to use services of a Postman here } 
} 

public class Postman 
{ 
    void sendMail(...){ ... } 
} 

我可能會Doctor::sendMail()

void sendMail() 
{ 
    Postman A = new Postman(); 
    A.sendMail(...); 
} 

是正確的嗎?

如果是這樣,那麼爲什麼'醫生'會創建一個'郵差'?這聽起來真的離真實生活場景很遠。消息是如何在對象之間共享的?

+0

這是一種方式。另一個是靜態方法,然後而不是實例化一個新的郵差,你可以使用'Postman.SendMail(「Hello world!」);'。我對你的問題是:你讀過關於面向對象編程的基礎知識嗎?所有的教程解釋(有時在極其詳細的信息) – Taegost

+0

內部醫生使郵差1實例,然後在博士內你發送郵件到該郵差實例。每次你想使用它的一種方法時,你不需要創建一個新的Postman實例。如果他們只是實用的方法,使他們靜態。 – csmckelvey

+0

如果任何人都可以發送郵件,你可以使用sendMail()方法創建一個'Human'類,並從中創建'Doctor'和'Postman' herit ... – francis

回答

1

如果您試圖創建事物的「真實世界模型」,那麼您將擁有一個全局PostOffice對象,該對象將包含許多Postmen。

醫生可能是一個DoctorOffice的一部分,或醫院

醫生將有一個成員變量指着他的郵差

Doctor.Postman = aPostmanObject; 

然後,他將讓郵遞員做的工作。

Doctor.Postman.SendMail(); 

假設你製造「的SendMail」郵差的公共方法(它會是這樣,因爲他是這樣做的公共服務)

2

更慣用的方法是有這樣的事情:

void sendMail(Postman postman) { 
    postman.sendMail(...); 

不要創建的第一個內部的其他對象。

在旁註中,Doctor::sendMail是C++語法。在Java中,不存在::

相關問題