Is the nesting of functions possible in the object oriented languages like C#, Java, C++ etc . If so, can anyone give an example?
-
What are you trying to solve? Or is it just curiosity? – Bart Kiers Apr 02 '10 at 07:08
-
4No, because (1) we aren't slaves, (2) you have made no effort at all, (3) you specified 3 languages plus "etc", (4) I don't see any capital letters, (5) this is a lazy question that Google solves, not StackOverflow. – Amy B Apr 02 '10 at 07:08
-
A downvote from me. – The Onin Feb 07 '17 at 08:13
4 Answers
Having nested function is irrelevant to being object-oriented.
- C# doesn't have nested functions, but you can use lambdas (See Why doesn't C# have lexically nested functions?). So are all other programming languages that support anonymous functions (including C++0x).
- You may create a local class, and overload the call operator to simulate a nested function (See is it possible in C or C++ to create a function inside another?).
- Meanwhile, many non-object-oriented languages like (the original) Pascal support nested functions natively, and GCC support it in C as an extension.
As other answers have pointed out, because you can create anonymous functions in most languages these days, you can assign such a function object to a variable, and that effectively results in a local function (although recursion may be tricky).
In C++ prior to C++1x anonymous functions (known as lambdas) are not yet available. However, you can still declare a function inside a function, because you can declare a class or struct inside a function. If you make that class implement operator()
, then instantiate the class and store it in a named variable, you will have effectively achieved the same as a lamda in C++1x.
The problem is that it will (a) be much more verbose and (b) it won't be permissible as an argument to a template.

- 114,894
- 38
- 205
- 284
Java is another one OO language. It does not support nested methods, but it does support nested class (it could help in workaround): http://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

- 1,887
- 3
- 29
- 40