A
Here are 6 key technical differences between an abstract class and an interface:
01
-- Abstract classes can have constants, members, method stubs (methods without a body) and defined methods
--- whereas interfaces can only have constants and methods stubs.
02
-- Methods and members of an abstract class can be defined with any visibility,
--- whereas all methods of an interface must be defined as public (they are defined public by default).
03
-- When inheriting an abstract class, a concrete child class must define the abstract methods,
--- whereas an abstract class can extend another abstract class and abstract methods from the parent class don't have to be defined.
04
-- Similarly, an interface extending another interface is not responsible for implementing methods from the parent interface.
--- This is because interfaces cannot define any implementation.
05
-- A child class can only extend a single class (abstract or concrete),
--- whereas an interface can extend or a class can implement multiple other interfaces.
06
-- A child class can define abstract methods with the same or less restrictive visibility,
--- whereas a class implementing an interface must define the methods with the exact same visibility (public).
B
C