I have been playing classical guitar for 4 years reading sheet music. Some of my friends who play acoustic guitar are mostly able to figure out songs by ear, but i fail miserably in this. While I can play the songs from sheet music easily and enjoy it . What can i do to improve ?
Playing by ear is just another skill.
Reading sheet music implies you can understand the musical notation, be it the notes, and the symbols like piano, forte, legato, etc. It's basically reading and interpreting what's written.
It happened to me also. I always learnt music this way, so I lacked ear playing. When I started studying music, we have hearing exercises, like listening a scale and knowing which one is, or transcribing melody to paper with the only aid being one note, typically A440. Also we practiced intervals.
You'll need to build yourself this skills. Try to transcribe songs. Getting by ear in which tonality it is. Working out the chords played in it, and the melody and rhythm.