Los métodos determinan el comportamiento de los objetos. Para saber que métodos debemos implementar hay que preguntarse que acciones están asociadas a las clases.
Ejemplo: la clase Gato tiene tiene como atributos color, peso, raza y como métodos se le pueden aplicar las acciones que hace un gato como corre, come, ronronea.
public class Gato{
//atributos
String color;
String raza;
String sexo;
int edad;
double peso;
//metodos que hay de varios tipos
//constructor
Gato(String s){
this.sexo = s;
}
//getter
String getSexo(){
return this.sexo;
}
//acciones a realizar
void ronronea(){
System.out.println("mrrrrr");
}
void come(String comdia){
if(comida.equals("pescado")) {
System.out.println("que bueno");
}else{
System.out.println("no quiero");
}
}
void pelea(Gato contricante){
if(this.sexo.equals("hembra")) {
System.out.println("no me gusta pelear");
}else{
if(contricante.getSexo(),equals("hembra")) {
System.out.println("no peleao con hembras");
}else{
System.out.println("te voy a reventar");
}
}
}
}
El método constructor tiene siempre el mismo nombre que la clase y se utiliza normalmente para inicializar los atributos.
Los atributos de la clase se declaran igual que las variables que aparecen en main, con la diferencia de que las variables definidas en el programa principal son únicas, sin embargo si se crean 10 objetos de la clase Gato, cada uno tiene sus calores para los atributos.
public class PruebaGato{
public static void main(String[] args){
Gato garfield = new Gato("macho");
Gato lily = new Gato("hembra");
Gato tom = new Gato("macho");
garfield.maulla();
lily.maulla();
tom.maulla();
}
}
Para entender mejor vamos a ver el ejemplo del Cubo en
En java existe una solución muy elegante de mostrar información sobre un objeto por pantalla. Hasta ahora hemos visto de que utilizando System.out.print(x); se puede mostar información. También si se quiere mostrar información sobre un objeto System.out.print(miCoche); .
Pero como hemos dicho se puede implementar un método elegante, toString.
Una clase puede tener una visibilidad publica, protegida o privada (public, protected, private)
Al definir una clase se puede especificar sus ámbitos de visibilidad. Un elemento public es visible desde cualquier clase, un elemento protected es visible solo de la clase actual y desde las subclases, mientra que uno private es visible solo de la clase actual.
public abstract class Animal{
private Sexo sexo;
public Animal(){
sexo = Sexo.Macho;
}
public Animal(Sexo s){
sexo = s;
}
public Sexo getSexo(){
return sexo;
}
public String toString(){
return "Sexo es: " + this.sexo;
}
}
Salvo en casos puntuales la regla de es de declarar private las variables de instancia y public a los métodos.
Mediante enum se puede definir un tipo enumerado, de esta forma un atributo solo podrá tener uno de los posibles valores que se dan como opción. Los valores que se especifican en el tipo enumerado se suelen escribir con todas las letras en mayúscula.
public enum Sexo{
MACHO, HEMBRA
}