Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Object-Oriented Swift 2.0 Class Inheritance Overriding Methods

Parthiban Mathivanan
Parthiban Mathivanan
1,442 Points

cannot complete the challange

error in calling the sub class

classes.swift
class Person {
    let firstName: String
    let lastName: String

    init(firstName: String, lastName: String) {
        self.firstName = firstName
        self.lastName = lastName
    }

    func getFullName() -> String {
        return "\(firstName) \(lastName)"
    }
}

// Enter your code below

class Doctor: Person {
    override init(firstName: String, lastName: String)  {
    super.init(firstName: firstName, lastName: lastName)
    }
    override func getFullName() -> String {

    }
}
let someDoctor = Doctor(firstName: "Dr.", lastName: lastName)

3 Answers

Bjorn Morrhaye
Bjorn Morrhaye
2,387 Points

Your override function needs a return value (different then the superclass)

let doctorName = "Dr. \(lastName)"
return doctorName

then check your Doctor parameters too when creating the instance !

Parthiban Mathivanan
Parthiban Mathivanan
1,442 Points

I am missing something in this let

someDoctor = Doctor(firstName: "Dr.", lastName: lastName)

Bjorn Morrhaye
Bjorn Morrhaye
2,387 Points

Dr is not your first name ! You can just type you're real first name and last name, the return value for the method in the doctor class ignores the firstname and adds the lastname to the Dr. String

Parthiban Mathivanan
Parthiban Mathivanan
1,442 Points

class Person { let firstName: String let lastName: String

init(firstName: String, lastName: String) {
    self.firstName = firstName
    self.lastName = lastName
}

func getFullName() -> String {
    return "\(firstName) \(lastName)"
}

}

// Enter your code below

class Doctor: Person { override init(firstName: String, lastName: String) { super.init(firstName: firstName, lastName: lastName) } override func getFullName() -> String { let doctorName = "Dr. (lastName)" return doctorName

}

} let someDoctor = Doctor(firstName: "Dr.", lastName: "Smith")

Solved !!!