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 most languages, and given the typical type system, it makes the most sense to think about it as a type that specifies "nothing". You didn't state your language, but for example, in C#, the `void` keyword corresponds to the [.NET framework void type](http://msdn.microsoft.com/en-us/library/system.void.aspx).