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 Creating a Subclass

Davis Meissner
Davis Meissner
1,179 Points

It is telling me numberOfSeats not initialized in super.init but when i add it it tells me i have an extra argument

So like I said in the title.... I am stumped.

classes.swift
class Vehicle {
    var numberOfDoors: Int
    var numberOfWheels: Int


    init(withDoors doors: Int, andWheels wheels: Int) {
        self.numberOfDoors = doors
        self.numberOfWheels = wheels
    }
}

class Car: Vehicle {
    let isCar: Bool = true
    var numberOfSeats: Int

    init(withDoors doors: Int, andWheels wheels: Int, andSeats seats: Int){
        super.init(withDoors: doors, andWheels: wheels, andSeats: seats)
        self.numberOfSeats = seats
}
}
let someCar = Car(withDoors: 4, andWheels: 4, andSeats: 4)

2 Answers

Steven Deutsch
Steven Deutsch
21,046 Points

Hey Dave Meissner,

The challenge wants you to create a new property in your Car subclass, numberOfSeats, with a default value of 4. Because it is a default value, you don't need to initialize it. Therefore, you don't have to pass another parameter into the initializer.

class Vehicle {
    var numberOfDoors: Int
    var numberOfWheels: Int

    init(withDoors doors: Int, andWheels wheels: Int) {
        self.numberOfDoors = doors
        self.numberOfWheels = wheels
    }
}

// Enter your code below

class Car: Vehicle {
    var numberOfSeats = 4

    override init(withDoors doors: Int, andWheels wheels: Int) {
        super.init(withDoors: doors, andWheels: wheels)
    }
}

let someCar = Car(withDoors: 4, andWheels: 4)

Note: You don't even need an initializer for this subclass because you will automatically use the initializer of the parent class since no new properties need to be initialized.

class Vehicle {
    var numberOfDoors: Int
    var numberOfWheels: Int

    init(withDoors doors: Int, andWheels wheels: Int) {
        self.numberOfDoors = doors
        self.numberOfWheels = wheels
    }
}

// Enter your code below

class Car: Vehicle {
    var numberOfSeats = 4

}

let someCar = Car(withDoors: 4, andWheels: 4)

Hope this helps! Good Luck!