Buenas pessoal, to precisando de uma esclarecida:
Estava tentando fazer uma “gambiarra” no java, so pra ver se funcionava e acabei “nao entendendo” o pq que aconteceu. Veja o codigo:
class A{
public int a = 15;
public B A(){
return new B();
}
}
class B{public int a=12;}
public class Main {
public static void main(String[] args) {
B a = new A();
System.out.println(a.b);
}
}
Isso da erro, e a conclusao a que cheguei, é que o operador new nao aloca espaco na memoria e faz toda aquela “tranqueira” com o valor retornado do constructor e sim ele busca a classe pelo “codigo”. Se ali esta A() ele vai fazer tudo que precisa, buscando pela classe A e nao com o retorno de A(). Acho que é isso, né? Ja assim funcionou:
class A{
public int a = 15;
public static B A(){
return new B();
}
}
class B{public int a=12;}
public class Main {
public static void main(String[] args) {
B a = A.A();
System.out.println(a.b);//mostra 12
}
}
Sabem me dizer sobre o new se é isso mesmo que imagino? O new realmente nao interage com valores retornados pelo constructor, né? Ele procura manualmente pela classe que tem o mesmo nome que o constructor e aloca espaco e faz mais um monte de coisas “manualmente”, né?
Abraço