Java - clases abstractas java

 
Vista:

clases abstractas java

Publicado por Jorge Osvaldo (3 intervenciones) el 20/01/2021 22:48:08
Hola, que tal? saludos a todos, estoy aprendiendo java y no logro sanear el error de este codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Uso_Persona {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Persona[] lasPersonas=new Persona[2];
		lasPersonas[0]=new Empleado2("Jorgelon",50000);
		lasPersonas[1]=new Alumno("Jorgelin","Curso de Programacion en Java");
 
 
 
	}
 
	abstract class Persona {
		public Persona(String nom) {
			nombre=nom;
		}
 
		private String nombre;
 
		public String dame_nombre() {
			return nombre;
		}
 
		public abstract String dame_descripcion();
 
	}
 
 
	class Empleado2 extends Persona{
		public Empleado2 (String nom, double sue) //Constructor
		{
			super(nom);
			sueldo=sue;
 
		}
 
		private double sueldo;
 
		public String dame_descripcion()
		{
			return "El empleado gana un sueldo de $ " + sueldo;
		}
	}
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

clases abstractas java

Publicado por Rodrigo (623 intervenciones) el 21/01/2021 04:44:21
Te falta la clase Alumno.
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

clases abstractas java

Publicado por Jorge Osvaldo (3 intervenciones) el 21/01/2021 09:27:45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package POO1;
 
public class Uso_Persona {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Persona[] lasPersonas=new Persona[2];
		lasPersonas[0]=new Empleado2("Jorgelon", 50000);
		lasPersonas[1]=new Alumno("Jorgelin","Curso de Programacion en Java");
 
 
 
	}
 
 
	abstract class Persona {
		public Persona(String nomb) {nombre2=nomb;}
		private String nombre2;
		public String dame_nombre() {return nombre2;}
		public abstract String dame_descripcion();
 
	}
 
 
	class Empleado2 extends Persona{
		public Empleado2 (String nomb, double suel) {
			super(nomb);
			sueldo=suel;
		}
 
		private double sueldo;
 
		public String dame_descripcion()
		{
			return "El empleado gana un sueldo de $ " + sueldo;
		}
	}
 
 
	class Alumno extends Persona{
		public Alumno(String nomb, String car) {
			super(nomb);
			carrera=car;
		}
		private String carrera;
 
		public String dame_descripcion() {
			return "La carrera que el alumno va a cursar es: " + carrera;
		}
	}
 
}
--------------------------------
ahi esta completo, el erro que surge es este:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Uso_Persona is accessible. Must qualify the allocation with an enclosing instance of type Uso_Persona (e.g. x.new A() where x is an instance of Uso_Persona).

at POO1.Uso_Persona.main(Uso_Persona.java:9)
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

clases abstractas java

Publicado por Rodrigo (623 intervenciones) el 21/01/2021 14:37:12
2 opciones:

- (Recomiendo esta) Las clases Persona, Alumno y Empleado2 sacalas de donde estan ahora y definelas en archivos separados. Persona.java, Alumno.java, Empleado2.java. Todos en el mismo package. En ese caso, el main que tienes en la clase Uso_Persona no requiere cambios

- Si mantienes las clases al interior de la clase Uso_Persona, no puedes crear objetos de las clases Alumno o Empleados sin haber creado antes un objeto de tipo Uso_Persona, que es lo que te dice el error que incluyes. Te obligas a crear un objeto de tipo Uso_Persona para poder acceder a las clases al interior, por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
// ...
	public static void main(String[] args) {
	    Uso_Persona u = new Uso_Persona();
		Persona[] lasPersonas = new Persona[2];
		lasPersonas[0] = u.new Empleado2("Jorgelon", 50000);
		lasPersonas[1] = u.new Alumno("Jorgelin","Curso de Programacion en Java");
		for(Persona p: lasPersonas) {
		    System.out.println(p.dame_nombre());
		}
	}
// ...

Deberias renombrar la clase Empleado2 a Empleado. Es extran~o ese 2 ahi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

clases abstractas java

Publicado por Jorge Osvaldo (3 intervenciones) el 21/01/2021 15:01:31
Gracias! Mas tarde lo haré, gracias.
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