2016-07-20 12 views
-2

Angenommen, ich habe Oberklasse, und ich will seinen Attributwert erhalten, UnterklasseWie bekomme ich Wert von superclass Attribut?

class Person { 
    var name = String() 

    init(name : String){ 
     self.name = name 
    } 
} 

var JonSnow = Person(name : "Jon Snow") 

class Ranger : Person { 

    func getRangerName()->String { 

     return "Ranger name is \(super.name)" 

    } 
    // I want to get name value from super class 
} 

Wie kann ich Namen Wert direkt aus Superklasse erhalten, ohne den Wert in der Unterklasse reinit?

+0

Nur ein self.name in den Kindern sollte den Trick machen. –

+0

Was meinen Sie mit "Ohne den Wert in Unterklasse reinit"? Du meinst, du willst einen 'Ranger' initialisieren ohne einen Namen anzugeben? Sie müssen dafür Ihren eigenen Initialisierer angeben. – Hamish

+0

@harmisch Ich möchte Wert direkt von Superklasse bekommen, die "Jon Snow" in diesem Fall ist, ist es posibble? – Angger

Antwort

0

können Sie einfach self.x zugreifen

So Ihr Code verwendet:

class Person { 
    var name : String = "Jon Snow" 
} 

class Ranger : Person { 

    func printName() { 
     print(self.name) 
    } 

} 

bearbeiten

Hier ist ein voll funktions Projekt mit diesem Beispiel implementiert: download project

+0

Aber wenn ich Ranger-Klasse deklariere, fragt sie nach dem Namensparameter? – Angger

+0

Vielleicht kommt der Fehler in Ihrem Code von woanders her. Ich habe ein leeres Projekt implementiert, das nur diese Klassen enthält. Bitte schau es dir an. –