Mohammad,
[minor edit]
Yes this is useful, some tricky things can be done with this, I would suggest documenting this in your wiki text when you use it, or you could come undone. Such that elsewhere in your wiki when you depend on the value from Parent.
We could call this "[re]\define"
One idea is to name the macro in a way where you know it may be overridden eg current-a would suggest there is a value set in parent but you may override it in the current tiddler with \define current-a.
When I write macros I try and place them in global macros and view templates etc... rather than include them in the working tiddlers that contain my information. In this case it can sometimes be hard to evaluate which define is likely to win, but you can count on the current tiddler having the known value if it contains the define.
Here is a similar example, tagged macros
\define a() {{$:/config/global-a}}
Then in a tiddler "a" returns the content of
$:/config/global-a as the value
But these as you have done in your example the local tiddler can have
\define a() not-global-a <!--override global"a"-->
<<a>>
Another way is just inside a macro with set/vars etc...
\define test()
<<a>> <!-- uses global a -->
\end
\define test-2()
<$set name=a value="local value">
<<a>> <!-- uses local a -->
</$set>
\end
Regards
Tony