Estou com uma pequena duvida na questão 6 pois classe A não foi importada porque ela da erro na hora da instancia queria entender
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou com uma pequena duvida na questão 6 pois classe A não foi importada porque ela da erro na hora da instancia queria entender
Adaumir, quando a classe B importa
import static a.A.*;
ela só ta importando a variável VALOR que é estática
public static final int VALOR = 15;
Como ela tem * se tivesse outras variáveis ou métodos estáticos ela também iria importar, mas nesse caso é só o VALOR mesmo.
Repara também que a classe A não foi importada, pra ela ser importada precisaria ter
import a.A ou
import a.*
package b;
import static a.A.*;
class B{
void m() {
A a = new A();
a.executa(VALOR);
}
}
Então é esse o motivo da resposta
Não importamos a classe A, somente seus membros, erro de compilação ao tentar referenciá-la
Espero que tenha entendido :D
A partir de 20 minutos no vídeo dessa aula o Guilherme explica isso, assiste de novo que vai clarear a sua cabeça. Bons estudos
Ah sim verdade, Obrigado Vânia Almeida
Boa noite Adaumir, vi que o exercício que você comentou é o exercício 7 e nele temos essas duas classes abaixo. A classe 'A' e a classe 'B', se você olhar a classe 'A' está correta, e a 'B' também, porém a classe 'B' não é public, ou seja, nenhuma outra classe fora do pacote (package) que ela está conseguem enxergar-la. Isso acontece devido aos modificadores de acesso do Java, pois no Java existem alguns modificadores de acesso como o 'public', 'private' , 'protected (ou default)' , entre outras. A 'public' permite com que a classe ou variável ou método que "carrega" ela, possa ser visto em outros lugares. A 'private' permite que a variável ou método que a "carregue" seja visível apenas na classe (class) que ela está. E a 'protected (ou default)' permite que a classe ou variável ou método que "carrega" ela, possa ser visto apenas no pacote (package) que ela encontra.
Obs: Quando falo : " a classe ou variável ou método que carrega " . Estou me referindo ao 'public int numero' , aonde o int Numero é quem carrega o public, ficando:
'Modificador_de_Acesso | Tipo_Variavel | Nome_Variavel'
public | int | numero
package a;
public class A {
public static final int VALOR = 15;
public void executa(int x) {
System.out.println(x);
}
}
package b;
import static a.A.*;
class B{
void m() {
A a = new A();
a.executa(VALOR);
}
}
Acho que a confusão está em:
"Não importamos a classe A, somente seus membros, erro de compilação ao tentar referenciá-la"
"Não importamos a classe A, somente seus membros estáticos, erro de compilação ao tentar referenciá-la"
Se fossem seus membros tudo seria importado não?