What is the difference between final Class and Class?
final class A {
}
class B {
}
Other answers are already given enough understanding about final keyword. I want to explain by some example.
Consider below example without final Keyword.
class A {
public var name: String
var breed: String
init(name: String, breed: String) {
self.name = name
self.breed = breed
}
}
class B:A{
override init(name: String, breed: String) {
super.init(name: name, breed: breed)
}
}
In above code it allow to overwrite the varible of it's super class. While Class with final keyword don't allow it. Refer below example.
final class A {
public var name: String
var breed: String
init(name: String, breed: String) {
self.name = name
self.breed = breed
}
}
class B:A{
**//ERROR:inheritance from a final class 'A' class B**
override init(name: String, breed: String) {
super.init(name: name, breed: breed)
}
}
Above code will give error inheritance from a final class A class B