您正試圖查看整個系統並一次控制它。面向對象編程的目的是爲了隱藏你的第三類可能需要做的事情的細節。
這些類必須有一個原因鏈接到對方的原因。假設頭等艙是所有事情都開始的地方。這個類應該有一組清晰的東西,它可以讓用戶從它那裏請求,它應該通過修改它的內部值來實現這些東西,並且要求它內部的任何對象去做一些事情來幫助它。保持這樣的思維方式,這將更有意義。
你的評論者是對的。您需要區分一個類 - 定義對象如何工作的一堆代碼 - 以及運行時獲取和發送消息的特定對象。
在Java對象中,消息實際上是函數調用,我們知道在幕後有一些流程式的流動。忽略這一點。
希望這會有所幫助。
簡而言之 - 考慮將對象的責任委託給對象,以及對事物向對象提出請求的編程方式。
作爲更具體的答案,這裏是一些對象如何交互。
class Train {
private Engine engine;
private Whistle whistle;
public Train() {
// these components are part of the train and so
// are constructed when it's constructed
engine = new Engine();
whistle = new Whistle();
}
public void go() {
whistle.toot();
engine.start();
}
}
class Driver {
private Train train;
private IPod iPod;
public Driver(IPod iPod, Train train) {
// the driver may be given any ipod
// and any train to drive
this.iPod = iPod;
this.train = train;
}
public void drive() {
iPod.startMusic();
train.go();
}
}
// main method
IPod iPod = new IPodNano();
Train train = new Train();
Driver driver = new Driver(iPod, train);
driver.drive();
現在,您將看到如何在運行時以多種不同方式將鏈接在一起的連接對象網絡中分配責任。
除非它們是靜態變量,否則不會更改類中的值,您可以在類的實例中更改值。 – 2015-04-04 00:09:17
但是,如果我在我的類聲明一個變量f.e public int mValue = 0;我如何從另一個類訪問這個變量? – 2015-04-04 00:13:07
那麼,你不能從任何地方訪問變量,直到你創建了一個類的實例。 ('new'創建一個實例。) – 2015-04-04 00:14:18