Java - Consulta herencia

 
Vista:

Consulta herencia

Publicado por Víctor (4 intervenciones) el 30/08/2022 08:01:31
Buenas noches, me gustaría saber si una clase hija puede heredar el valor asignado de un atributo porque en el ejercicio que tengo le asigno una palabra a un String y cuando quiero acceder a este desde un método de la clase hija me sale como null.
De antemano muchas gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta herencia

Publicado por Kabuto (1381 intervenciones) el 30/08/2022 18:11:23
Sí, la hija también posee los atributos de su clase madre.

Muéstranos el código de ambas clases, a ver como están escritas. Y también la parte donde asignas esa palabra al String
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta herencia

Publicado por Víctor (4 intervenciones) el 31/08/2022 02:23:53
Muchas gracias por la ayuda aquí está el ejercicio. El rpoblema radica que una de las marcas del array debería ser seleccionada por el usuario y guardarse el marca pero cuando intento a acceder a marca a través de Servicios me tira un null por eso no presenta nada en pantalla.


public class TiendaPc {


public static void main(String[] args) {
Productos per = new Productos();
Servicio per1 = new Servicio();



System.out.println("Las marcas que ofrecemos son " );
per.Marcas();
per1.Reparacion();


public class Productos {

protected String marca;


public String Marcas(){
String list[] = {"Apple", "Dell", "HP","Huawei","Lenovo"};
for (String list1 : list) { // for (int i=0; i<list.length;i++)
System.out.println(list1);
}
System.out.println("");
System.out.println("Le interesa alguna o busca otra en específico?");
Scanner tecla = new Scanner (System.in);
String mar = tecla.nextLine();

if (mar.contains(list[0])){
}
else if(mar.contains(list[1])){
}
else if(mar.contains(list[2])){
}
else {
System.out.println("No contamos con esa marca");
}
marca = mar;
return marca;


}

}
public class Servicio extends Productos {

public void Reparacion(){
if (marca != null){
System.out.println("Estaa PC fue comprada aqui por lo tanto la reparamos sin algun costo");

}

}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta herencia

Publicado por Kabuto (1381 intervenciones) el 31/08/2022 17:33:25
Vale,

El problema es que estás trabajando con dos objetos distintos: per y per1
1
2
3
public static void main(String[] args) {
		Productos per = new Productos();
		Servicio per1 = new Servicio();

Lo que le ocurra a per, no le afecta para nada a per1.
Que dos clases sean parientes, no significa que sus objetos estén automáticamente "comunicados". Cada objeto tiene su propia existencia y viven sus "vidas" por separado.

Para que funcione lo que tu quieres hacer, has de trabajar con un único objeto, y ha de estar instanciado como Servicio, porque así podrá comportarse como un Productos y como un Servicio (polimorfismo)
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TiendaPc {
 
 
	public static void main(String[] args) {
		Servicio per = new Servicio();
 
		System.out.println("Las marcas que ofrecemos son " );
		per.Marcas(); //Aquí actúa como Productos
		per.Reparacion(); //Aquí actúa como Servicio
 
	}
 
}

Si lo ejecutas así, ahora sí se comportará como tú esperabas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta herencia

Publicado por Víctor (4 intervenciones) el 01/09/2022 03:06:04
Muchas gracias!!!, el único problema es que a través de per no puedo tener acceso a Reparacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta herencia

Publicado por Kabuto (1381 intervenciones) el 01/09/2022 20:56:36
Si lo declaras como Productos, no no puedes.

Pero si lo declaras como Servicio, tienes acceso a Marcas y a Reparacion.

En eso consiste la herencia: un objeto Servicio, también es un objeto Productos, así que dispone de los mismos atributos y métodos que tendría un objeto Productos, además de los que tiene como Servicio.

Pero un objeto Productos, no dispone de los atributos y métodos de Servicio.

Fíjate en el código que puse.
Lo declaré como Servicio, y puedo llamar al método Marcas y a Reparacion sin problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta herencia

Publicado por Víctor (4 intervenciones) el 06/09/2022 03:09:40
Muchas gracias por su ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar