Error Type Cannot instantiate
Hola a tod@s estoy haciendo un programa que registra llamadas pero en la clase Actividad4 me aparece un error Cannot instantiate the type LlamadasLocales. Creo que estoy poniendo bien el nombre cuando inicio el objeto, acontinuación pongo el código fuente de todo lo que llevo echo haber si pueden echarme una mano porque no veo como puedo solucionarlo. Saludos y gracias
{
//Atributos
private int numeroLlamadas;
private double costeLlamadas;
//Constructor
public Centralita(int numeroLlamadas, double costeLlamadas)
{
this.numeroLlamadas= numeroLlamadas;
this.costeLlamadas = costeLlamadas;
}
//Getters
public int getNumeroLlamadas()
{
return numeroLlamadas;
}
public double getCosteLlamadas()
{
return costeLlamadas;
}
//Resto de metodos
public void numeroTotalLlamada(int numeroLlamadas)
{
this.numeroLlamadas = numeroLlamadas;
}
public void costeTotalLlamadas(double costeLlamadas)
{
this.costeLlamadas = costeLlamadas;
}
public void registrarLlamadas()
{
numeroLlamadas += 1;
costeLlamadas += getCosteLlamadas();
}
}
{
//Atributos
private String numeroOrigen;
private String numeroDestino;
private double duracion;
//Constructor
public Llamada(String param1, String param2, double param3)
{
this.numeroOrigen = param1;
this.numeroDestino = param2;
this.duracion = param3;
}
//Getters
public String getNumeroOrigen()
{
return numeroOrigen;
}
public String getNumeroDestino()
{
return numeroDestino;
}
public double getDuracion()
{
return duracion;
}
public String setNumeroOrigen()
{
return numeroOrigen;
}
public String setNumeroDestino()
{
return numeroDestino;
}
public double setDuracion()
{
return duracion;
}
//Resto de metodos
public abstract void calcularPrecio(double param3);
}
{
//Atributos
private double precio;
//Constructores
public LlamadasLocales(String param1, String param2, int param3)
{
super(param1, param2, param3);
this.precio = 0.15;
}
//Getters
public double getPrecio()
{
return precio;
}
//Resto de metodos
public double calcularPrecio()
{
return getDuracion() * precio;
}
public void llamadaLocal()
{
System.out.println("Llamadas locales" + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino()
+ " Duracion: " + getDuracion());
}
}
{
//Atributos
private double precio1;
private double precio2;
private double precio3;
private int franja;
//Constructores
public LlamadasProvinciales(String param1, String param2, int param3, int param4)
{
super(param1, param2, param3);
this.precio1 = 0.20;
this.precio2 = 0.25;
this.precio3 = 0.30;
this.franja = 0;
}
//Resto de metodos
public void calcularPrecio(LlamadasProvinciales param1, LlamadasProvinciales param2, LlamadasProvinciales param3)
{
if (franja==1)
{
System.out.println("El precio de la franja1 es: " + getDuracion() * precio1);
} else
if (franja==2)
{
System.out.println("El precio de la franja2 es: " + getDuracion() * precio2);
}
else
System.out.println("El precio de la franja3 es: " + getDuracion() * precio3);
}
public void llamadaProvincial()
{
System.out.println("Llamadas provinciales: " + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino() + " Duracion: " + getDuracion() + franja);
}
}
{
public static void main(String[] args)
{
Centralita centralita1 = new Centralita(1, 1);
LlamadasLocales llamada1 = new LlamadasLocales("912345612", "9555612301", 67);
//LlamadasLocales llamada2 = new LlamadasLocales("9555612301", "912345612", 23);
//LlamadasProvinciales llamada3 = new LlamadasProvinciales("955555", "123444", 12, 2);
//LlamadasProvinciales llamada4 = new LlamadasProvinciales("123444", "955555", 23, 1);
centralita1.registrarLlamadas();
//centralita1.registrarLlamadas(llamada2);
//centralita1.registrarLlamadas(llamada3);
}
}
- Inicie sesión o regístrese para enviar comentarios
Si tu clase base es Llamada (
Si tu clase base es
Llamada
( la cual tienes marcada comoabstract
) entonces las clases que se derivan de ellas (heredan sus propiedades y métodos pues) no deberían ser abstractas, prueba eliminando de tus clasesLlamadasLocales
yLlamadasProvinciales
la palabra reservadaabstract
y ya no deberías de tener el problema que mencionas.Gracias era eso lo que
Gracias era eso lo que fallaba pero ahora me aparece otro error The method registrarLlamadas() in the type Centralita is not applicable for the arguments (LlamadasLocales). Porque motivo no es el del tipo Centralita?
No sé
Mi habilidad de conectarme remotamente a tu máquina y ver tú código me está fallando (de hambre).
Digo, pega aquí cómo estás usando ésos objetos (entre tags de <code> y </code>) y ya podríamos ver dónde está el error.
Lo siento te pongo el código
Lo siento te pongo el código de las clases Llamada, LlamadasLocales, LlamadasProvinciales y Actividad4. El error me aparece en la clase Actividad4 gracias por responder.
{
//Atributos
private String numeroOrigen;
private String numeroDestino;
private double duracion;
//Constructor
public Llamada(String param1, String param2, double param3)
{
this.numeroOrigen = param1;
this.numeroDestino = param2;
this.duracion = param3;
}
//Getters
public String getNumeroOrigen()
{
return numeroOrigen;
}
public String getNumeroDestino()
{
return numeroDestino;
}
public double getDuracion()
{
return duracion;
}
public String setNumeroOrigen()
{
return numeroOrigen;
}
public String setNumeroDestino()
{
return numeroDestino;
}
public double setDuracion()
{
return duracion;
}
//Resto de metodos
public abstract double calcularPrecio(double param3);
{
}
}
{
//Atributos
private double precio;
//Constructores
public LlamadasLocales(String param1, String param2, int param3)
{
super(param1, param2, param3);
this.precio = 0.15;
}
//Getters
public double getPrecio()
{
return precio;
}
//Resto de metodos
public double calcularPrecio(double param3)
{
return getDuracion() * precio;
}
public void llamadaLocal()
{
System.out.println("Llamadas locales" + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino()
+ " Duracion: " + getDuracion());
}
}
{
//Atributos
private double precio1;
private double precio2;
private double precio3;
private int franja;
//Constructores
public LlamadasProvinciales(String param1, String param2, int param3, int param4)
{
super(param1, param2, param3);
this.precio1 = 0.20;
this.precio2 = 0.25;
this.precio3 = 0.30;
this.franja = 0;
}
//Resto de metodos
public double calcularPrecio(LlamadasProvinciales param1, LlamadasProvinciales param2, LlamadasProvinciales param3)
{
if (franja==1)
{
System.out.println("El precio de la franja1 es: " + getDuracion() * precio1);
} else
if (franja==2)
{
System.out.println("El precio de la franja2 es: " + getDuracion() * precio2);
}
else
System.out.println("El precio de la franja3 es: " + getDuracion() * precio3);
return franja;
}
public void llamadaProvincial()
{
System.out.println("Llamadas provinciales: " + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino() + " Duracion: " + getDuracion() + franja);
}
public double calcularPrecio(double param3)
{
return 0;
}
}
{
public static void main(String[] args)
{
Centralita centralita1 = new Centralita();
LlamadasLocales llamada1 = new LlamadasLocales("912345612", "9555612301", 67);
LlamadasLocales llamada2 = new LlamadasLocales("9555612301", "912345612", 23);
//LlamadasProvinciales llamada3 = new LlamadasProvinciales("955555", "123444", 12, 2);
//LlamadasProvinciales llamada4 = new LlamadasProvinciales("123444", "955555", 23, 1);
centralita1.registrarLlamadas(llamada1);
centralita1.registrarLlamadas(llamada2);
//centralita1.registrarLlamadas(llamada3);
}
}
Err ...
Mejor pega tu stack trace, las clases ya las habías puesto en tu post inicial.
Ahora que veo la firma de tú método
registrarLlamadas
en tu claseCentralita
... no recibe ningún parámetro, sin embargo, en tu clase Actividad4 le estás enviando parámetros de tipoLlamadasLocales
... puede ser por ahí el error, supongo.A veces solo basta buscar un poco ...
Original
import java.util.Scanner;
/**
*
*@author Sr. Negativo 2011
*
*/
public class Llamadas{
//constantes
public static final int Local=2;
public static final int Celular=5;
public static final int Larga=3;
static int tipoServicio(int t){
if(t==1){
System.out.println("[LLamada local]\n");
}else if(t==2){
System.out.println("[LLamada a celular]\n");
}else {
System.out.println("[LLamada de larga distancia]\n");
}
return t;
}
public static void main(String[] args)throws IOException,Exception{
Scanner teclado=new Scanner(System.in);
int tipo=0;double duracion=0,costo=0;
while(true){
//tipo
do{
System.out.println("\n\t[Tipo llamadas]\n");
System.out.println("1. Local-->$2 por minuto");
System.out.println("2. A celular-->$5 por minuto");
System.out.println("3. Larga distancia-->$3 por minuto");
System.out.println("4. Salir");
System.out.println("\nOpcion: ");
tipo=teclado.nextInt();
}while(tipo<=0||tipo>4);
if(tipo==4){
System.exit(0);
}else{
tipoServicio(tipo);//muestra el tipo de servicio
//duración
do{
System.out.println("Duracion (minutos): ");
duracion=teclado.nextDouble();
}while(duracion<=0);
switch(tipo){
case 1:costo=duracion*Local;break;
case 2:costo=duracion*Celular;break;
case 3:costo=duracion*Larga;break;
default:System.out.println("\nOpcion incorrecta ");break;
}
System.out.println("Costo total llamada: [$"+costo+"]");
}//fin else
}//fin while
}//fin main
}//fin Llamadas
El stack trace me pone The
El stack trace me pone The method registrarLlamadas() in the type Centralita is not applicable for the arguments (LlamadasLocales). E solucionado el error pero cuando ejecuto el programa no muestra nada por la pantalla. @Sr negativo no quiero que me hagan el trabajo por que se que de esa manera no voy a prender, solo quiero que me echen una mano para saber porque falla. Saludos