2016-08-09 99 views
2

Verwendung des folgenden Codes:Wie wird die Methode aus der übergeordneten Hierarchieklasse verwendet?

public class Animal { 
    public void a() { 
     System.out.println("Animal"); 
    } 
} 

public class Cat extends Animal { 
    public void a() { 
     System.out.println("Cat"); 
    } 
} 

public class BlackCat extends Cat { 
    public static void main(String[] args) { 

     BlackCat black = new BlackCat(); 
     a.a(); 
    } 
} 

Wie in der Kinderklasse BlackCat Methode a() von Animal aber nicht von Cat benutzen?
Ich möchte Animal in der Konsole erhalten.

+0

'Tier # a' ist überschrieben. Wenn Sie 'black.a()' anrufen, wird 'Cat # a' aufgerufen. Wenn Sie die zusätzlichen Informationen wünschen, rufen Sie einfach 'super.a()' in 'Cat # a' auf, bevor Sie drucken. – SomeJavaGuy

+0

müssen Sie ein Tierobjekt dafür erstellen –

+0

@KevinEsche Also meinst du, dass ich die Methode a von Animal direkt ohne Aufruf der Methode a von Cat verwenden könnte? –

Antwort

1

Ich denke, Sie könnten eine Additionsfunktion mit einem Set-Präfix (dieser Fall _) hinzufügen und das als Ihren "Super-Accessor" oder was auch immer Sie es nennen möchten.

public class Cat extends Animal { 
    public void a() { 
     System.out.println("Cat"); 
    } 
    public void _a() { 
     super.a(); 
    } 
} 
+0

Vielen Dank für Ihren Kommentar. Aber die Frage ist, könnte ich direkt Methode von Elternklasse für die Hierarchie direkt verwenden? ohne die Tier- und Katzen-Klasse zu wechseln. Ich nehme an, dass ich das nicht tun darf. –

+1

@BohdanMyslyvchuk Nein, nicht, wenn Ihr Objekt keine aktuelle Klasse 'Tier' darstellt. Wenn Sie dazu in der Lage wären, würden Sie die Regeln des Polymorphismus brechen – SomeJavaGuy

+1

@BohdanMyslyvchuk nein Es tut mir leid, in Ihrem Beispiel ist die Methode a() in Cat [überschreiben] (https://docs.oracle.com /javase/tutorial/java/IandI/override.html) die Methode a() in Animal. Es ist ein Teil des [Polymorphismus] (https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) in Java. – Olian04