Keywords: abstract
, assert
abstract
-
As a class modifier,
abstract
is a nonaccess modifier that declares a class which cannot be instantiated. You cannot create an object from abstract classes. However, you can create subclasses from abstract classes by extending them. An abstract class may or may not include abstract methods. If a class includes abstract methods, the class itself must be declaredabstract
. When a subclass does not provide all of the abstract methods in its parent class, the subclass must also be declaredabstract
.As a method modifier,
abstract
declares a method that must be implemented by a subclass. The first concrete (not abstract) subclass must implement all abstract methods of the superclass. Abstract methods cannot have the modifiersfinal
orprivate
because subclasses need to access the methods in order to implement them.It is a compile-time error if a abstract method declaration also contains any one of the keywords
private
,static
,final
,native
,strictfp
, orsynchronized
.An abstract method is declared without an implementation. In other words, without braces, and followed by a semicolon, as in the following example code:
public abstract class Shape { int x, y; ... void moveTo(int x, int y) { ... } // moveTo(int, int) abstract void draw(); abstract void scale(int factor); } // class Shape
Then each concrete subclass of
Shape
, such asCircle
andTriangle
, must implement thedraw
andscale
methods:class Circle extends Shape { void draw() { ... } // draw() void scale(int factor) { ... } // scale(int) } // class Circle class Triangle extends Shape { void draw() { ... } // draw() void scale(int factor) { ... } // scale(int) } // class Triangle
Abstract class provide default functionality for the subclasses, whereas an interface mandates a list of functions or properties. So, objects that
extends
an abstract class “Is-A” subclass; objects thatimplement
an interface “Must-Do” the functions, or “Must-Have” the constants or nested types of the interface.If an abstract class contains only abstract method declarations, it should be declared as an interface instead. Still, keep in mind that when you make a change to an abstract class all of the subclasses will now have this new functionality. On the other hand, once an interface is changed, any class that implements it that will be broken.
assert
- [awaiting definition note]
One thought on “Java Language Keywords — A’s (2)”