To declare each and every subclass of the initialize 'required' keyword needs to be defined
before the init() function.
class classA {
required init() {
var a = 10
println(a)
}
}
class classB: classA {
required init() {
var b = 30
println(b)
}
}
let res = classA()
let print = classB()
When we run the above program using playground, we get the following result:
10
30
10
A default initializer has the same access level as the type it initializes, unless that type is
defined as public. When default initialize is defined as public it is considered internal. When
the user needs a public type to be initializable with a no-argument initializer in another
module, provide explicitly a public no-argument initializer as part of the type's definition.
Access Control for Protocols
When we define a new protocol to inherit functionalities from an existing protocol, both
has to be declared the same access levels to inherit the properties of each other. Swift
access control won’t allow the users to define a 'public' protocol that inherits from an
'internal' protocol.
public protocol tcpprotocol {
init(no1: Int)
}