[Java] 왜 내가 보호 된 자바 메소드를 액세스 할 수 없다는 생각도 내가 클래스를 확장했습니다?


Answers

이렇게하면 :

MidiSynth synth = new MidiSynth();
sequence = synth.scoreToSeq(score); 

실제로 MidiSynth 클래스를 확장했다는 사실을 이용하지는 않습니다.

시도한다면

this.scoreToSec(score);

그런 다음 보호 된 기능에 액세스 할 수 있습니다.

Question

보호 된 메서드에 대한 설명서는 다음과 같습니다.

/** Converts jmusic score data into a MIDI Sequence */
protected  javax.sound.midi.Sequence scoreToSeq(Score score)

그리고이 작은 클래스를 만들어서 scoreToSeq 메서드가 제공하는 클래스를 확장했습니다.

public class MidiSequence extends MidiSynth{

    public Sequence getSequence(Score score){
        MidiSynth synth = new MidiSynth();
        Sequence sequence = null;
        try
        {
                    // Here I get the error saying that the method has
                    // protected access in MidiSynth
            sequence = synth.scoreToSeq(score);

        }
        catch (InvalidMidiDataException e)
        {
            /*
             *  In case of an exception, we dump the exception
             *  including the stack trace to the console.
             *  Then, we exit the program.
             */
            e.printStackTrace();
            System.exit(1);
        }

        return sequence;

    }
}