Question: I can't answer completely "why should we call "**void**" is '**return type**'?"

*How do I prove that "**void**" is a type?*

Answer: 
`void` is not a type, it is not also a return type:

in [JLS 14.8](https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.8) you can find a note about this type:

> 
> Note that
>  the Java programming language does not allow a "cast to void"-**void is
>  not a type**
> 
> 
>
`void` is a type in the Java language (you can read that directly in the Java Language Specification).
However the type `void` has no member values, that is no concrete value will ever have the type void. `void` is therefore used to indicate that a method cannot return a value when called (that is `void` is the type of "no value").