Olá, Markus!
Acho que houve um erro na transcrição. De fato, a classe ClasseDefine
não existe. Provavelmente, o que deveria ser dito é que o método MetodoProtegido
é visível na classe que define esse método e nas classes derivadas.
No caso, a classe que definiu o método MetodoProtegido
foi a classe ModificadoresTeste
. Como a classe ClasseDerivada
herda de ModificadoresTeste
, ela também tem acesso ao método MetodoProtegido
, pois esse método contém o modificador de acesso protected
.
Já a ClasseTeste
possui um objeto do tipo ModificadoresTeste
, mas não herda dessa classe, logo, esse objeto só conseguirá usar os métodos com modificadores de acesso public
(que podem ser usados em qualquer arquivo ou classe dentro do mesmo projeto ou projetos externos) ou internal
(que só podem ser usados dentro de arquivos ou classes dentro do mesmo projeto), que são os métodos MetodoPublico
e MetodoInterno
.
Espero ter ajudado!
Boa sorte em seus estudos!