Differences - Interfaces vs Abstract Classes

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