InputStream is an Abstract class.Then how are we able to access System.in.And moreover int read() is an abstract method in InputStream class.Then how are we able to access S
InputStream
is an abstract
class which cannot be instantiated directly. System.in
refers to the object of type InputStream
which means that System.in
refers to the object of that class which extends
the InputStream
class.
For example
abstract class IAmAbstract{
// ...
}
class IAmNotAbstract extends IAmAbstract{
// ...
}
Of course, the following statement is correct:
IAmNotAbstract obj = new IAmNotAbstract();
As well as this statement is also correct:
IAmAbstract obj = new IAmNotAbstract();
So, any object of subclass
of InputStream
is also a type of InputStream
class and subclass
itself.