Sobreescribir un método; @override, protected y super
En este tutorial vamos a continuar con el ejemplo del hotel de perros que hemos estado haciendo en los anteriores tutoriales, para explicar las palabras "override, protected y super".
Vamos a utilizar la misma clase main (ahora llamada Tutorial14):
package com.edu4java.tutorial14;
public class Tutorial14 {
public static void main(String[] args) {
Dog2[] dogs = insertDog();
printDogsOnConsole(dogs);
feed(dogs);
System.out.println("After eating------------");
printDogsOnConsole(dogs);
}
private static void feed(Dog2[] dogs) {
for (int i = 0; i < dogs.length; i++) {
double weightBeforefeeding = dogs[i].getWeight();
dogs[i].setWeight(weightBeforefeeding + dogs[i].getPortion());
}
}
private static void printDogsOnConsole(Dog2[] dogs) {
for (int i = 0; i < dogs.length; i++) {
dogs[i].printToConsole();
}
}
private static Dog2[] insertDog() {
Dog2[] dogs = new Dog2[4];
// list of Dogs
String[] names = { "Coco", "Sultan", "Boby", "Drak" };
String[] colours = { "brown", "black", "white", "blue" };
double[] weight = { 1.5, 75, 3.5, 45.1 };
double[] portion = { 0.2, 1, 0.2, 0.8 };
for (int i = 0; i < dogs.length; i++) {
Dog2 dog = new Dog2();
dog.setName(names[i]);
dog.setColour(colours[i]);
dog.setWeight(weight[i]);
dog.setPortion(portion[i]);
dogs[i] = dog;
}
return dogs;
}
}
En la clase Dog, introduciremos el concepto de protected, haciendo que la variable colour sea accesible desde la clase hija Dog2.
package com.edu4java.tutorial14;
/**
* A class is a mould from which we can create objects or instances
* An object is an instance of a class
*
* JavaBeans are reusable software components for Java
* that can be manipulated visually in a builder tool.
*/
public class Dog {
// instance variables
private String name;
private double weight;
protected String colour;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public void printToConsole() {
System.out.print(" name: " + getName());
System.out.print(" colour: " + this.colour);
System.out.println(" weight: " + this.weight);
}
}
En la clase Dog2 conseguimos imprimir la variable "portion" sin tener que modificar la clase Dog, sobreescribiendo el método printOnConsole.
package com.edu4java.tutorial14;
public class Dog2 extends Dog {
private double portion;
public double getPortion() {
return portion;
}
public void setPortion(double portion) {
this.portion = portion;
}
@Override
public void printToConsole() {
super.printToConsole();
System.out.println(" portion: " + this.portion);
}
}
| << Anterior | Siguiente >> |



