好的,這是我的問題。我有以下類:正確獲取OOP
class Job {
bool isComplete() {}
void setComplete() {}
//other functions
};
class SongJob: public Job {
vector<Job> v;
string getArtist() {}
void setArtist() {}
void addTrack() {}
string getTrack() {}
// other functions
};
// This were already implemeted
現在我想實現一個VideoJob並從作業派生它。但這是我的問題。我也有以下功能巫婆它設置爲只與SongJob工作:
void process(SongJob s)
{
// not the real functions
s.setArtist();
..............
s.getArtist();
.............
s.getArtist();
...............
s.setArtist()
}
在這裏,我只是希望它表明該函數只使用派生類對象的方法。因此,如果我有另一個派生於Job的對象,我需要將參數更改爲Job,但是編譯器不會知道什麼是Thoose函數,我不知道要測試每個人是什麼類型的對象,然後將它投射出來,所以我可以調用正確的功能。
因此,將所有函數放在基類中是可以的,因爲那樣我就沒有問題了,但我不知道這是否正確OOP,如果一個類處理歌曲,另一個類處理視頻,我好的oop意味着有2個clases。
如果我沒有說清楚,請說出來,我會嘗試更好地解釋。
換句話說,我想用polymorfism。
所以如果SonjJob有一個容器來存儲歌曲和VideoJob一個來存儲視頻,這些容器我應該把它們也放在基類中?我認爲派生類不會有任何數據:) – Kobe
我知道關於oop細節,我的問題是我需要在C++和java中做這個,所以我需要用兩種語言來思考:)但是你的解釋是非常好。謝謝 – Kobe
@vBx:不,你可以將這些容器放入類中。他們是不同的,因爲一個商店*只有*視頻,而其他商店*只*歌曲。這不是一個共同點,而是一個區別,所以它不屬於基類。 –