Extends [Resolvido]

6 respostas
A

Oi pessoal, Deus abençoe o estudo e a sabedoria de vocês. Eu sou novo estudante de JAVA, e estou tendo algumas dúvidas com relação ao mesmo. Quero usar o extends, pois criei uma classe e quero que outra classe utilize os métodos guardados nessa classe.

Olhem esse código

public class MyMath //objeto, como se fosse uma biblioteca

{

public int Delta(int a, int b, int c)

{

int delt = (b<em>b) - (4</em>a*c);

return(delt);	

}
public void Raizes(int delta) //mostra quant de raizes reais
{
	if (delta&gt;0)
		System.out.print("Existem 2 raízes reais!");
	if (delta==0)
		System.out.print("Existe 1 raíz real!");
	if (delta&lt;0)
		System.out.print("Não existem nenhuma Raíz real!");		
}

public int Fatorial(int valor)
{
	if (valor &gt; 0)
	{
		for (int i = valor-1; i&gt;=1; i--)
			valor = valor * i;
		return(valor);
	}
	else
	{
		System.out.print("\nNão existem fatorial!"); 
		return(0);
	}
}

}

Essa á a classe onde guardo os métodos, agora vou mostrar a classe onde gostaria de usar esses métodos, mas sem precisar instanciar a classe.

import java.util.Scanner;

public class Equacao extends MyMath

{

public static void main(String[]args)

{

Scanner ler = new Scanner(System.in); //instânciando o objeto;
int a, b, c;

	System.out.print("Entre com o valor de a...: "); a = ler.nextInt(); 
	System.out.print("Entre com o valor de b...: "); b = ler.nextInt(); 
	System.out.print("Entre com o valor de c...: "); c = ler.nextInt();
	System.out.print("\nDelta = " + Delta(a,b,c));
	Raizes(Delta(a,b,c));
}

}

Isso é correto fazer? Porque eu só conseguia usar esses métodos instânciando a classe, assim:

import java.util.Scanner;

public class Equacao extends MyMath

{

public static void main(String[]args)

{

MyMath setDelta = new MyMath();

Scanner ler = new Scanner(System.in); //instânciando o objeto;
int a, b, c;

	System.out.print("Entre com o valor de a...: "); a = ler.nextInt(); 
	System.out.print("Entre com o valor de b...: "); b = ler.nextInt(); 
	System.out.print("Entre com o valor de c...: "); c = ler.nextInt();
	System.out.print("\nDelta = " + setDelta.Delta(a,b,c));
	setDelta.Raizes(setDelta.Delta(a,b,c));
}

}

Desde já eu os agradeço.

6 Respostas

wbdsjunior

o correto é instanciar a classe Equacao… já que ela herdou os métodos da classe MyMath.

public class Equacao extends MyMath { public static void main(String[]args) { Equacao setDelta = new Equacao(); ... } }
já que você está começando, recomendo ler essa apostila.

abraço.

ViniGodoy

Oi, seja bem-vindo ao GUJ. Sempre que postar códigos, por favor, use a tag code. Ela deixa o seu código formatado, aí conseguiremos ler com muito mais facilidade. Como você é novo no fórum, segue aqui o link que ensina como fazer isso:
http://www.guj.com.br/posts/list/50115.java
Dessa vez vou deixar formatado para você, na próxima, use as tags code você mesmo, ok?

Uma dica sobre o extends. Não use extends só para “usar os métodos de uma classe em outra”. A herança tem um significado muito forte, que é o de definir a relação “é um”. Para fins didáticos o seu exercício está ok, com ele pelo menos você consegue ver o mecanismo funcionando. Mas, na prática, usar herança por esse motivo é certeza de catástrofe (você vai entender melhor quando estudar sobre polimorfismo).

A

Obrigado meus amigos, obrigado mesmo. Enteni o todo recado, agora eu entendi que é melhor eu instanciar a outra classe, e que devo usar o extends para herdar propriedades de outra classe, como funcionário ISA Pessoa.

Mas agora me bateu uma dúvida, eu posso criar bibliotecas para guardar métodos em JAVA, como em C, Pascal?, pois gostaria de guardar alguns métodos meus em Libs escritas por eu mesmo, e depois chama-las e usar alguns métodos.

É possivel galera?, por exemplo o métodos Delta, que retorna o valor de Delta, posso guarda-lo numa biblioteca para não precisar instânciar uma classe e usa-lo, Classe obj = new Classe();, depois obj.Delta(a,b,c); mas simplesmente Delta(a,b,c), entendem?

Desde já agradeço, Deus os abençoe!!!

J

Para não precisar instanciar um objeto você pode criar um método estático do delta.

public static int Delta(int a, int b, int c){
	int delt = (b*b) - (4*a*c);
	return(delt);
	}

Assim você só precisa colocar MyMath.Delta(a,b,c).

Espero ter ajudado.
Um abraço

lcegatti

analyst.rafael:
Obrigado meus amigos, obrigado mesmo. Enteni o todo recado, agora eu entendi que é melhor eu instanciar a outra classe, e que devo usar o extends para herdar propriedades de outra classe, como funcionário ISA Pessoa.

Mas agora me bateu uma dúvida, eu posso criar bibliotecas para guardar métodos em JAVA, como em C, Pascal?, pois gostaria de guardar alguns métodos meus em Libs escritas por eu mesmo, e depois chama-las e usar alguns métodos.

É possivel galera?, por exemplo o métodos Delta, que retorna o valor de Delta, posso guarda-lo numa biblioteca para não precisar instânciar uma classe e usa-lo, Classe obj = new Classe();, depois obj.Delta(a,b,c); mas simplesmente Delta(a,b,c), entendem?

Desde já agradeço, Deus os abençoe!!!

Perfeitamente possível vc pode encapsular sua(s) classe(s) em arquivos JAR (Java ARchives) e depois importa-la no CLASSPATH de sua aplicação, onde as classes que estiverem em seu JAR estariam disponíveis para utilização.

Amém :thumbup:

A

Obrigado Ice, mas como fazer isso?

Criado 19 de novembro de 2008
Ultima resposta 20 de nov. de 2008
Respostas 6
Participantes 5