2017-04-26 2 views
0

J'ai eu une excellente réponse à une question précédente, donc je vais pousser ma chance ici. Bien qu'il existe déjà un excellent post à ce sujet; What does a "Cannot find symbol" compilation error mean? Je me bats pour trouver quelle raison s'applique et pourquoi.Impossible de trouver la classe héritée

L'erreur se produit lors de la création de l'objet FirstClassTicket, à la fois avant et après les égales où il appelle FirstClass. Je suppose que j'ai fait une erreur quand j'ai hérité de FirstClass de Ticket car cela fonctionnait à l'origine en appelant bien Ticket avant que je commence à inclure à différents types de billets.

class Booking{ 
    public static class Ticket{ 
     int Price; 
     int Amount=1; 
     int Discount=0; 
     public int WhatCost(){ 
      int Cost =Amount*(Price-Discount); 
      return Cost; 
     } 
     //Inheriting Ticket classes. 
    class FirstClass extends Ticket{ //Defines standard class tickets. 
     int Price =10; 
    } 

    } 
    public static void main(String args[]) { 
     FirstClass FirstClassTicket=new FirstClass(); 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("Welcome to the advance booking service.");//Introduce program. 
     System.out.println("A first class ticket costs:"); 
     System.out.println(FirstClassTicket.WhatCost()); 
    } 
} 
+2

Vous avez défini FirstClass comme une classe interne de Booking. Faites-vous une faveur et définissez chaque classe dans un fichier séparé selon la norme java. À moins bien sûr que vous voulez vraiment avoir une classe interne (dont je doute fortement). Matériel de lecture connexe: [Tutoriel Java: Classes imbriquées] (https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) –

+2

... ou faites juste 'FirstClass'' static'. –

+0

D'accord, je vais jeter un coup d'oeil à ça. La tentative de conversion en 'static class FirstClass extends Ticket {// définit les tickets de classe standard. 'N'a pas non plus changé les erreurs. –

Répondre

0

Vous avez défini FirstClass comme classe interne de ticket. Rendez la FirstClass statique et accédez-y comme indiqué ci-dessous.

Booking.Ticket.FirstClass FirstClassTicket=new Booking.Ticket.FirstClass();