Abstract classes and interfaces

An abstract class is one which cannot be instantiated, either because it contains or inherits abstract methods, or because it has been declared abstract. An abstract method is one with a signature but not an implementation (i.e. function definition). “Concrete” just means “not abstract.”

In Java, classes and methods may be declared abstract. Abstract classes may contain any number of concrete and abstract methods, but if a class contains one or more abstract methods then the class must be declared abstract. You can also define an interface, which is like an abstract class. Usually, interfaces only contain abstract methods and do not contain any fields.2.1 In an interface, methods are abstract by default.

In C++, abstract methods must be declared virtual. This also implies that the class is abstract, but you don't need to declare the class abstract. Unlike Java, C++ doesn't have interfaces. There is also no abstract keyword.