簡體   English   中英

當父類是引用類型並通過方法傳遞時,如何從子類訪問屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM