2017-02-23 10 views
0

Unten ist mein Code. Ich verstehe nicht, was der Fehler ist. Kann jemand in der Lage sein zu führen.Überschreiben Sie eine Konstruktorklasse

class State { 
    static String country; 
    static String capital; 

    State() // Constructor 
    { 
     country = "America's"; 
     capital = "Washington D.C"; 

    } 

    static void display() { 
     System.out.println(capital + " " + "is" + " " + country + " " + "capital."); 

    } 
} 

class Place extends State // Method Overriding 
{ 
    static void display() { 
     System.out.println("Capital is Washington D.C."); 
    } 

    public static void main(String[] args) { 

     State st = new State(); 
     Place pl = new Place(); 
     st.display(); 
     pl.display(); 
     st = pl; 

    } 
} 

Während des Laufens als angezeigt „Fehler: Hauptklasse Staat $ Platz nicht gefunden oder geladen werden“

As the output needs: "Capital is Washington D.C." instead of (capital + " " + "is" + " " + country + " " +"capital.")

+0

welchem ​​Zweck dieses ?? 'st = pl;' –

+0

es funktioniert gut mit mir .... –

+0

Anzeige "Hauptstadt ist Washington D.C." statt (Kapital + "+" ist "+" "+ Land +" "+" Kapital. ") – Arvind

Antwort

-1

Ihre Place Klasse muss definiert werden, wie public.

Edit: Die Datei muss auch Place.java

+1

Was hältst du davon? Können Sie das genauer erklären? – Pshemo

+0

@TomK Und was lässt dich denken, dass die Hauptmethode in der öffentlichen Klasse sein muss? – Pshemo

+0

'main'-Methode muss nicht in der öffentlichen Klasse sein. Auch wenn die oberste Klasse nicht öffentlich ist, muss sie nicht in einer Datei mit demselben Namen sein, so dass beide Aspekte Ihrer Antwort einfach falsch sind. Ich weiß nicht, wer Antworten uploadet, ohne sie zu testen. – Pshemo

0
class State 
{ 
    static String country; 
    static String capital; 


    State()  //Constructor 
    { 
     country = "America's"; 
     capital = "Washington D.C"; 

    } 

    static void display() 
    { 
     System.out.println(capital + " " + "is" + " " + country + " " +"capital."); 

    } 
} 

Hauptklasse

class Place extends State // Inheritance 
    static void display() 
    { 
     System.out.println("Capital is Washington D.C."); 
    } 
    public static void main(String[] args) 
    { 

     State st = new State(); 
     st.display(); // to print sub class method 
     display(); // to print same class method 
     //st = pl; No idea of this point .. 

    } 
} 
+0

"* st.display(); // Sub-Klassen-Methode zu drucken *" Sie wahrscheinlich sup (super) -Klasse gemeint, da 'Ort erstreckt State 'und' st' ist vom Typ 'State'. Mit anderen Worten, es ist dasselbe wie "State.display()" aufzurufen, da "display" eine statische Methode ist. – Pshemo

+0

@Arvind irgendein Update? –

0

Overriding hängt eine Instanz einer Klasse auf, die benannt werden. Der Punkt polymorphism ist, dass Sie eine Klasse unterklassifizieren können und die Objekte, die diese implementieren subclasses haben unterschiedliche Verhaltensweisen für die gleichen Methoden in der definiert (und in der subclasses überschrieben). Eine statische Methode ist keiner Instanz einer Klasse zugeordnet, daher ist das Konzept nicht anwendbar.

Es gab zwei Überlegungen, die das Design von Java beeinflussten. Ein Problem war die Performance: Es gab eine Menge Kritik an Smalltalk, dass es zu langsam war (Garbage Collection und polymorphe Aufrufe waren dabei) und die Entwickler von Java waren entschlossen, das zu vermeiden. Ein anderer war die Entscheidung, dass die Zielgruppe für Java C++ Entwickler war. Statische Methoden funktionieren so, wie sie es gewohnt sind, und zwar für C++ Programmierer und war auch sehr schnell, da es nicht nötig ist, bis zur Laufzeit zu warten, um herauszufinden, welche Methode aufgerufen werden soll.

I give you a small example : // and it is not overriding method.May be this is you actually expect

public class HelloWorld { 

    public static void main(String args[]) { 

     Company st = new Company(); 
     eBay pl = new eBay(); 
     st=pl; 
     //st.address(); 
     pl.address(); 

    } 
} 

class Company { 
    static String country; 
    static String capital; 

    Company() // Constructor 
    { 
     country = "America's"; 
     capital = "Washington D.C"; 

    } 

    static void address() { 
     System.out.println(capital + " " + "is" + " " + country + " " + "capital."); 

    } 

} 

class eBay extends Company { 

    public static void address() { 
     System.out.println("Capital is Washington D.C"); 
    } 
} 
+0

und speichern Sie die Datei als HelloWorld.java –

Verwandte Themen