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

Nikki Bearman
Nikki Bearman
3,389 Points

Help with challenge for Overriding Methods in Object-Oriented Swift 2.0

I'm not sure what I'm meant to be doing in this challenge and was wondering if anyone might be able to help. The challenge is as follows and my code is attached.

I've provided a base class Person in the editor below. Once an instance of Person is created, you can call getFullName() and get a person's full name.

Your job is to create a class named Doctor that overrides the getFullName() method. Once you have a class definition, create an instance and assign it to a constant named someDoctor.

For example, given the first name "Sam", and last name "Smith", calling getFullName() on an instance of Person would return "Sam Smith", but calling the same method on an instance of Doctor would return "Dr. Smith".

I know I have a lot to learn in this area to be able to understand what I'm doing but if anyone can help on this challenge so I can learn a little more I'd be very grateful.

Thanks,

Nikki

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 func getFullName() -> String {
    return "\("Dr.") \(lastName)"
}}


let someDoctor = Doctor(firstName: "Sam", lastName: "Smith")
Michael Drexler
Michael Drexler
4,374 Points

Hey Nikki Bearman,

i think the problem is in your override method. You are using a string interpolation for a literal. Can you try it just without curved brackets like "Dr. \(lastName)" ?

Nikki Bearman
Nikki Bearman
3,389 Points

Michael Drexler You're totally right, that was the problem, completely missed that! Thanks so much :-)

1 Answer

Michael Drexler
Michael Drexler
4,374 Points

"Hey Nikki Bearman,

i think the problem is in your override method. You are using a string interpolation for a literal. Can you try it just without curved brackets like "Dr. \(lastName)" ?"

You are welcome! I am glad that I could help :). Can you mark the answer as final answer if it works for you please? :) Thank you!

Best regards Michael

Nikki Bearman
Nikki Bearman
3,389 Points

No problem, all done. Thanks again for your help.