Olá pessoal estou estudando pra certificação e estou em duvida na resposta da pergunta abaixo :
Por que o item A para zero já que existe quatro declaração essa é minha duvida ?
Já que a resposta é a letra C …não entendi …?
Se alguem puder me ajudar agradeceria …abs
Código:
Section1:Declarations,InitializationandScoping>Objective1.2>Question3Given:1.abstractclassColor{2.protectedabstractStringgetRGB();3.}4.5.publicclassBlueextendsColor{6.// insert code here 7.}Andfourdeclarations:publicStringgetRGB(){return"blue";}StringgetRGB(){return"blue";}privateStringgetRGB(){return"blue";}protectedStringgetRGB(){return"blue";}Howmany,insertedindependentlyatline6,willcompile?A)0B)1C)2D)3E)4
Pelo que entendi, a resposta correta mesma é o item C.
O fato do item A ser 0, quer dizer que nenhuma declaração irá compilar.
A pergunta diz assim: Indenpendente das 4 declarações acima, quantas
declarações irá compilar:
O correto irá compilar com a primeira e segunda declaração!
porque na classe abstrata Color foi definido o método getRGB como
protegido, então este método que deve ser obrigado declarar na
classe filha deve ser protegida ou pública.
oculos:
deve ser obrigado declarar na
classe filha deve ser protegida ou pública
isso acontece porque, ao sobrescrever um métodos, sua definição deve dar igual ou mais permissão para o mesmo… ou seja, se você vai sobrescrever um método private, ele pode ser qualquer coisa (já que ele é o com menos permissão de acesso), já um public, só pode ser public (maior permissão de acesso).
T
thingol
Nada como usar o compilador para conferir. A resposta é C mesmo - como se sabe, ao sobrepor um método, você pode torná-lo mais público, não mais privado.
A ordem de privacidade é:
private > [default] > protected > public
ou seja, protected abstract String getRGB só pode ser sobreposta por um método "protected" ou "public".
abstractclassColor{protectedabstractStringgetRGB();}publicclassBlueextendsColor{publicStringgetRGB(){return"blue";}// OKStringgetRGB(){return"blue";}// attempting to assign weaker access privileges; was protectedprivateStringgetRGB(){return"blue";}// attempting to assign weaker access privileges; was protectedprotectedStringgetRGB(){return"blue";}// OK}