opa, ja q a galera ta gostando, ai vai mais uma… hehehehe, qual será a saida do código abaixo?
package com.foo.p1;
public class Super {
public int x = 420;
protected int doStuff()
{
return x;
}
}
package com.foo.p2;
import com.foo.p1.Super;
public class Sub extends Super {
public static void main( String [] args )
{
new Sub.callStuff();
}
void callStuff()
{
System.out.println( "this " + this.doStuff() );
Super s = new Super();
System.out.println( "super " + s.doStuff() );
}
}
vai dar erro, ta usando o operador new pra uma chamada de metodo, acho q isso n pode… (alem do metodo nao estatico estar sendo chamado de forma erronea)…
Quando voce compilar ocorrera um erro, ao tentar acessar um membro private de uma classe por uma classe que nao seja do mesmo pacote ou por uma subclasse por heranca, voce tera um erro de compilacao.
Pq o metodo doStuff() e do tipo protected, e somente pode ser chamando por classes que extendam a classe que tem este metodo.
Estou certo???{
Eu acho que também metodos protecteds podem ser chamados por classes do mesmo package, mesmo não extendendo a classe do metodo, estou certo em relação a esta afirmação?
}
Assim como voce “errou” (se enganou) ao esquecer os parenteses eu tambem “errei”(me enganei) ao escrever private, onde voce ver private leia-se “protected”.
:roll: private? … o exemplo ta usando protected …usando private vai dar erro até se tu só imaginar q o atributo existe heaheahea[/quote]