A class that has some shared logic while leaving part of its implementation to subclasses.
A class that defines some methods without an implementation, forcing subclasses to provide one. It can't be instantiated on its own. Beyond unimplemented (abstract) methods, it can also hold shared fields and fully implemented methods -- the main difference from an interface, which can't hold any implementation at all.
© 2026 ITBGM