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 Inheritance Overriding Methods

Joseph Kandi
Joseph Kandi
2,640 Points

How do you override a method and provide a default to the overridden method?

I have overridden the incerementBy function but is give me an error when i add a default points: Double = 7.0, if i do remove it then i also get an error that i did not add a default value to the points parameter. Am not sure how to accomplish this task.

Button.swift
class Button {
  var width: Double
  var height: Double

  init(width:Double, height:Double){
    self.width = width
    self.height = height
  }

  func incrementBy(points: Double){
    width += points
    height += points
  }
}

class RoundButton: Button {
  var cornerRadius: Double = 5.0

   override func incrementBy(points: Double){
    self.width += points
    self.height += points
   }
}

1 Answer

Sjors Theuns
Sjors Theuns
6,091 Points

Hi Joseph,

you forgot to specify that the parameter points has now a default value. So you need to add an underscore like so:

   override func incrementBy(_ points: Double = 7.0){
    self.width += points
    self.height += points
   }

That should do the trick.

Joseph Kandi
Joseph Kandi
2,640 Points

Thanks, just realized the moment you answered