- La herencia se usa para ubicar código común en una clase base.
- La herencia hace que se pueda tener un código más modularizado y
fácil de mantener.
- Para notificar que una clase hereda de otra, se usa la palabra
clave extends.
- Cuando una clase hereda de otra, ésta toma todos sus métodos
visibles y variables instanciadas.
- A la clase que está siendo heredada se le llama clase base o
superclase.
- La clase que toma la funcionalidad se le llama subclase.
- Un método de una superclase puede ser sobreescrito (overridden) si la subclase tiene
un método con idénticas características (mismos parámetros y nombre) y el
método de las superclase no es final ni static. Ejemplo: la clase padre es
esta :
public class Animal {
public void comer(){
System.out.println("Animal comiendo...");
}
}
y la clase hijo puede ser esta:
class Caballo extends Animal{
public void comer(){
System.out.println("Caballo comiendo...");
}
} - Otro ejemplo de herencia:
public class Padre{
String m=”padre”;
void say(){
System.out.println(“Say padre”);
}
}
public class Hijo extends Padre{
String m=”hijo”;
void say(){
System.out.println(“Say hija”);
}
String m=”padre”;
void say(){
System.out.println(“Say padre”);
}
}
public class Hijo extends Padre{
String m=”hijo”;
void say(){
System.out.println(“Say hija”);
}
}
public class Test{
public static void main(String[] args) {
Padre yo=new Hijo();
yo.say();
System.out.println(“m=”+m);
}
}
public class Test{
public static void main(String[] args) {
Padre yo=new Hijo();
yo.say();
System.out.println(“m=”+m);
}
}
El resultado sería:
Say hija
m=padre
Say hija
m=padre
- La palabra clave super se puede usar para acceder a ese
método sobrescrito.
- Una clase solo puede heredar de otra, como un hijo solo puede
heredar de un único padre.
- Una clase concreta (concrete class) es aquella que puede
ser instanciada, y todos sus métodos deben ser implementados. Es la clase
estándar en java.
- Una clase abstract es
aquella que no puede ser instanciada. Debe ser extendida por otra clase,
es decir, debe tener alguna clase hija. Una clase abstract debe tener al
menos un método abstracto. Si hay un método abstracto, la clase tiene que
ser también abstracta. Puede tener constructores pero solo lo podrán usar
las hijas mediante super.
- No puede tener métodos privados pero sí variables privadas.
- Cuando una clase hereda de una clase abstracta, no todos los métodos abstractos
deben estar implementados en esta clase no abstracta.
- Si hay un método static en la clase abstract, el método que lo
implemente también debe marcarse como static.
- Una
clase final se declara como la clase
que termina una cadena de herencia, es lo contrario a una clase abstracta.
Nadie puede heredar de una clase final.
- Ejemplos de sobrecarga (Overload):
Si tenemos: public int m(int a,int b):
- Todas las clases heredan de la clase object.
- Una interface es una clase abstracta pura, es decir, una
clase donde todos los métodos son abstractos (no se implementa ninguno).Es
un esqueleto donde el diseñador define la cabecera de los métodos. En una
interface todos los métodos son públicos y abstractos. No es necesario
poner public a los métodos del interfaz, pero los métodos que lo
implementen en otra clase si hay que ponerle public. Las interfaces no se
heredan, solo se implementan.
- Las interfaces tienen atributos que serán constantes : public
static final p=2;
- Una interfaz puede heredar interfaces, no clases.
- Una interfaz puede heredar interfaces(extends), no implementar
interfaces (implements)
- No se puede crear una instancia de un interfaz (Pet p=new Pet());
- Para indicar que una clase implementa los métodos de una
interface se utiliza la palabra clave implements.
- Una clase puede implementar múltiples interfaces utilizando una
lista separada por comas.
- Una clase que implementa una interfaz debe implementar todos los métodos contenidos en
esa interface.
- No se puede instanciar una interfaz.
- El concepto de Encapsulación es el almacenamiento en un
mismo lugar de datos y código relacionado. No es un ejemplo de
encapsulación un código que tiene una clase con atributos públicos.
- Los modificadores de acceso se usan para restringir el
acceso a métodos y variables.
- El modificador de acceso public permite que cualquier
clase pueda acceder a métodos y variables públicas.
- El modificador de acceso private permite que solo los
métodos de la misma clase puedan acceder a otros métodos y variables
privadas.
- Protected hace que los métodos o variables solo estén
disponibles en las clases del mismo paquete.
- El concepto de Information Hiding(Ocultación de información) es el uso de modificadores de acceso restringidos para ocultar los detalles de implementación de una clase.
- Cuando se crean métodos o instancias de variables, se debe
utilizar el modificador de acceso más restrictivo posible.
- Un getter se usa para acceder al valor de una variable
privada.
- Un setter se usa para establecer el valor de una variable
privada.
- Ambos getter y setter deben seguir la misma nomenclatura de
nombres de JavaBeans, deben empezar por ‘get’,’set’ o ‘is’ seguidos del
nombre de la variable, empezando por letra mayúscula.
- La herencia en UML representa un ‘is-a’ y se muestra asi:
No hay comentarios:
Publicar un comentario