elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  herencia en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: herencia en java  (Leído 2,432 veces)
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
herencia en java
« en: 20 Marzo 2014, 02:40 am »

que diferencia existe en herencia y clase abstracta???



En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: herencia en java
« Respuesta #1 en: 20 Marzo 2014, 03:54 am »

Los dos son conceptos de la programación orientada a objetos. Una clase abstracta en Java no se puede instanciar, es por ésto que las clases abstractas, como su nombre lo indica, se usa para 'abstraer' una idea y plasmarla en una clase de forma general. Es por eso, que a las subclases de una clase, se dice que son 'especialistas', ya que ellas implementan los métodos de la clase abstracta y la hacen especialmente funcional para esta clase.

Ej:

Código
  1. public abstract class Animal {
  2.  
  3. // a diferencia de las interfaces una clase abstracta puede
  4. // contener variables de instancia y metodos no abstractos
  5. String nombre;
  6.  
  7. // las subclases deben implementar este metodo (especializacion)
  8. public abstract void accion();
  9.  
  10. public void setNombre(String nombre) {
  11. this.nombre = nombre;
  12. }
  13.  
  14. public String getNombre() { return nombre; }
  15.  
  16. }
Código
  1. public class Perro extends Animal {
  2.  
  3. // hereda String nombre
  4.  
  5. @Override
  6. public void accion() {
  7. System.out.println("Guarf, Guarf! Grrrrr");
  8. }
  9.  
  10. // hereda los setters y getters
  11. }
Código
  1. public class Gato extends Animal {
  2.  
  3. // hereda String nombre
  4.  
  5. @Override
  6. public void accion() {
  7. System.out.println("Miau, miau...");
  8. }
  9.  
  10. // hereda setters y getters
  11. }

Código
  1. Animal animal = new Animal(); // ERROR. No se puede instanciar una clase abstracta
  2. Animal animal = new Perro(); // OK. Un Perro es un animal, y Perro no es abstracto por lo esto es valido

Código
  1. public void actuar(Animal animal) { // si Animal fuera una interface tambien funcionaria esto
  2. // sea perro o gato, esto se determina en tiempo de ejecucion y llama al metodo accion() correspondiente
  3. animal.accion();
  4. }


En línea

bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: herencia en java
« Respuesta #2 en: 20 Marzo 2014, 05:33 am »

si utilizo una clase concreta y la quiero heredar estaria bien ?  me explico con tu ejemplo:

Código:
public class Animal {
 
// a diferencia de las interfaces una clase abstracta puede
// contener variables de instancia y metodos no abstractos
String nombre;
 
 
public void setNombre(String nombre) {
this.nombre = nombre;
}
 
public String getNombre() { return nombre; }
 
}
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: herencia en java
« Respuesta #3 en: 20 Marzo 2014, 05:48 am »

Cualquier clase puedes heredarla, independientemente que sea abstracta o no. Sin embargo, es necesario que antes crear esa clase, tengas en cuenta si es necesario que se instancie ésta clase. Como te dije, una superclase por lo general es una abstracción muy general y las subclases son las que especializan esa abstracción. Así que no tiene mucho sentido instanciar una superclase, aunque quizás en algunos casos si el programador así lo requiere con un fin específico, puede hacerse.

PD: Si tu duda ya fue despejada, por favor marca el tema como solucionado.

Saludos.
« Última modificación: 21 Marzo 2014, 15:35 pm por Mitsu » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manejar Herencia en Java
Java
**Adem** 1 14,154 Último mensaje 2 Marzo 2008, 17:38 pm
por Casidiablo
Herencia
Java
m@o_614 6 4,796 Último mensaje 20 Abril 2012, 00:46 am
por m@o_614
[Java] Ayuda con herencia
Programación General
samyri 2 2,073 Último mensaje 19 Agosto 2014, 16:37 pm
por samyri
¿En qué estoy fallando en herencia java? auxilio por favor
Java
miltonprogramador 6 3,210 Último mensaje 16 Diciembre 2016, 02:30 am
por miltonprogramador
Herencia java
Java
Dayleap 0 1,964 Último mensaje 3 Abril 2017, 14:27 pm
por Dayleap
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines