![](/img/trans.png)
[英]Can I access a member variable of a child class through a reference to a parent class?
[英]How can I access an attribute from a child class when the parent class is the reference type and passed through a method?
首先,對於這個問題的冗長,我感到抱歉,我不確定該怎么問,但是我可以更好地解釋它。
我有一個父類和2個子類,該示例僅涉及一個
public abstract class AudioFile{ //parent
blah blah blah
} //end class AudioFile
public class MP3File extends AudioFile{
private int bitRate; //unique to MP3File class
} //end class MP3File
現在說我有一個MP3File對象,但是它引用了AudioFile
public class Driver{
... // pretend main exists
AudioFile file = new MP3File();
file.setBitRate(100); //pretend method exists
edit(file);
private void edit(AudioFile audio)
{
//how would I edit the bit rate?
} //end method edit
} //end class Driver
您問題的真正答案是“不要這樣做”。
MP3File是AudioFile的擴展; 這被認為是MP3File對象是AudioFile對象的特例,而MP3File唯一適用於MP3文件的東西。
您的編輯方法將AudioFile作為參數。 根據您的示例,AudioFiles沒有bitRate參數。
如果您能夠將傳遞給編輯的參數轉換為MP3File,那仍然不是一個好主意。 這意味着該方法正在處理MP3File對象,並且不應假定傳遞給它的任何AudioFile對象都可以轉換為MP3File。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.