Like structs, only with inheritance. Also, they're copy-by-reference...

Base Classes

Subclasses

Explicitly Overriding

Super.init

“As a basic rule, you should start new types as structures until you need one of the features that classes provide. Start with a class when you're working with a framework that uses classes or when you want to refer to the same instance of a type in multiple places. ”

Excerpt From: Apple Education. “App Development with Swift.” Apple Inc. - Education, 2017. iBooks. https://itunes.apple.com/au/book/app-development-with-swift/id1219117996?mt=11

“For example, when you're working with UIKit and want to create a custom view, you create a subclass of UIView. When working with frameworks, it's often an expectation that you'll pass around class instances. Many frameworks have method calls that expect certain things to be classes. So in these cases, you'll always choose to use a class over a structure.”

Stable Identity

Classes allow stable identity by pointer referencing.

Swift Collections

Excerpt From: Apple Education. “App Development with Swift.” Apple Inc. - Education, 2017. iBooks. https://itunes.apple.com/au/book/app-development-with-swift/id1219117996?mt=11