En realidad tu problema no tiene nada que ver con el paso por referencia. Lo que te pasa es que un constructor no devuelve ningún valor. Tienes que declarar un constructor y después un método para hacer lo que quieres. En tu caso tu clase podría ser estática directamente, no necesitas un constructor ni ninguna instancia, pero dado que lo has hecho así, te indico un poco cómo sería tal y como lo has hecho (pero insisto, tu clase puede ser estática).
class primos {
boolean esPrimo;
public primos() {
esPrimo = false;
}
public boolean es_primo(int n) {
int k=2;
esPrimo=true;
while((k<=n-1) && (esPrimo)){
if((n%k)==0)
esPrimo=false;
else
esPrimo=true;
k++;
}
return(esPrimo);
}
}
class primos_ppal {
public static void main
(String args
[]) { primos var;
var=new primos;
System.
out.
println(var.
es_primo(3));
}
}
Aparte, realmente el atributo
boolean esPrimo; te sobra por todos lados, pero entiendo que estés practicando con clases y sea algo meramente para aprender.
Resumiendo, tu programa correcto sería algo como (respetando tu algortimo, personalmente no lo haría así)
public static class Primos
{
public static boolean es_primo(int n)
{
int k = 2;
boolean esPrimo = true;
while((k <= n-1) && (esPrimo))
{
if((n % k) == 0)
{
esPrimo = false;
}
else
{
k++;
}
}
return esPrimo;
}
}
public class primos_ppal
{
public static void main
(String args
[]) {
System.
out.
println(Primos.
es_primo(3)); }
}
Y en cuanto al PD, cualquier método puede ser estático. No influye el tipo de retorno.