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

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

Answer: 
Hope 
[class void](http://download.oracle.com/javase/6/docs/api/java/lang/Void.html) explains why void is a type.

> 
> The Void class is an uninstantiable placeholder class to hold a
>  reference to the Class object representing the Java keyword void.
> 
> 
> 

```
public final class Void extends Object

```
Yes, void is definitely type, meaning 'nothing'.
By the way, do you mean C (C++, Objective-C, ...).
Couldn't say for any language, but in C (C++, Objective-C, ...) void is a type.  

But it is special data type. You couldn't declare variable of type void. That's differ void from any other types.
But you could declare pointer to void. Function which return value is void means function has no return value, or returns nothing. That's afraid all cases where void type could be used.  

void \* v; /\*\* declares variable v as pointer to void \*/  

\*v used as left value in expression could be assigned value of any type without type cast. That's why void type was introduced into language.  

You updated your question, underlining you were asking about Java. Java has no pointers and no functions. void type is used in declarations of methods returning nothing.