You can create screens using function modules however classes have to call separate program to generate screens.
Classes are more secure than FMs.
Class type increases the performance.
Class type is OO, it allows more flexibility. Can have multiple ALVs in one screen.
Classes will allow reusability better than FM because being Object Oriented.
Classes are instantiable while function groups are not.
Objects are the instance of class but FMs are not instances of a Function Group.
Function modules can be executed asynchronously and can be called by other systems remotely also.
A program can work with instances of several function groups at the same time however it cannot work with several instances of a single function group.