Most pure object-oriented languages make you provide such accessor methods. Finalizer methods are best used for optimizing the removal of an object. As in the above example, by cleaning up things that the object may have used or by removing references to other objects. When the last thread dies, the program stops. Kills whatever threads are present.
Garbage collector is a thread.
There is no way to access it anymore. It is automatically marked and cleared in the next iteration of the garbage collection thread. Java allows only single inheritence. Subclassing allows us to create a new object defined in terms of some existing object. The keyword extends denotes subclassing.