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
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?