Boa tarde a todos…
Observerm as 3 classe a seguir:
public class Sql1 {
private String sql = "Select * from tabela";
public String getSql() {
return sql;
}
}
public class Sql2 {
private String sql = "Select * from tabela";
public String getSql() {
return sql;
}
}
public class Execute {
Sql1 sql = new Sql1();
public Execute() {
System.out.println(sql.getSql());
}
[size=18][b]Na classe Execute. eu instanciei um novo objeto do tipo Sql1 e printei ele no Metodo contrutor. até aí ok.
Sei que o exemplo acima é bem simplório, mas é para que eu possa expor minha duvida que é a se guinte:
Como fazer com que no metodo execute() da classe execute, eu possa instanciar um nova claase que eu ainda não sei o nome/tipo mas que sempre vai ter o metodo getSql()? Existe um meio com que a classe que foi instanciada execute metodos da claase que instanciou ela?[/b][/size] :?:
[color=red][b]Gente apesar do exemplo ser simplório, sei que pessoa irão atentar aos erros de metodologias, ou de não estar usando de forma correta o paradigma POO, mas realmente não é essa a questão, pois a aplicação desses recursos que apresento aqui é para um implementação mais complexa.
Então você vai ter que fazer a tua classe Execute declarar um atributo privado como private ConsultaSQL consultaAtual;, e receber esse objeto por parâmetro no construtor ou num método da tua classe Execute.
Eu intendi o que vcs me passaram, mas ainda não resolve meu problema…
mudando um pouco, pra tentar resolver meu problema, [color=red]teria como uma classe que foi instanciada em outra classe alterar ou executar metodos da classe que instanciou ela?[/color]
Eu digo isso porque no caso desse cenario que eu creie, talvez não dê para enxegar perfeitamente a necessidade, mas fixando de novo os olhos na linha:
ConsultaSQL sql3 = new sql3();
tenhoa interface ConsultaSQL o objeto sql3 e digo que ela é do tipo new sql3().
Se eu tiver varias:
new sql4();
new sql5();
new sql6();
new sql7();
teria que deixar todas elas referenciadas dentro do código?
por exemlo um linha do tipo:
ConsultaSQL sql = new “Class ()”
???
se assim for possivel, fixarei meus olhos apenas na criação das classe implementadas do ConsultaSQL e passaria a nova instancia.
espero que tenham intedido, ainda sou programador novato, tenho poucos posts no forum, leio muito material de java, to tentando fazer um sisteminha na pratica pra agulçar o conhecimente e decora-lo tambem. desculpem qualquer problema aew.
[quote=joesh]Eu intendi o que vcs me passaram, mas ainda não resolve meu problema…
mudando um pouco, pra tentar resolver meu problema, [color=red]teria como uma classe que foi instanciada em outra classe alterar ou executar metodos da classe que instanciou ela?[/color][/quote]
Estamos rodando e rodando e não chegamos ao ponto de resolver o problema. Acho que você está fazendo algo desnecessário.
Poderia falar o que você quer resolver, de maneira mais geral, sem entrar em detalhes de implementação? Daí podemos discutir sobre que soluções adotar.
public Execute() {
System.out.println(sql.getSql());
}
}
criei um variavel do tipo ConsultaSQL chamada sql, essa variavel vai receber atraves do metodo setConsultaSQL a classe que implementa a Consulta SQL ja instanciada. depois é só executar o metodo e resultado positivo.
assim, posso passar qualquer tipo de classe que implementa a interface Consulta SQL
[color=green]Agradeço a atenção de todos, peço desculpas qualquer coisa. embora tivesse tido leituras sobre interface, acredito que não tinha chegado ao intendimento coreto sobre seu uso, agora sim creio que poderei implementar de forma correta, pois realmente agora descobri seu uso.[/color]