Different Classes

In my game i want to have the player be able to choose from different classes all with different abilities. I have Most of these abilities setup but i have a question. How would i go about having the class the player selected have just those abilites. and not ones from the other classes. Do i need to make a different character controller for each class and have it be assigned to that player somehow or what.? For example if there is Mage And warrior to choose from and the player picks warrior whats to stop them for being able to like shoot of fireball that the mage has.?

I probably would do it with one character for each class because each class could be very different with each others, for example a mage has mana, but a warrior has stamina instead, so making different characters would be the best I think

do you know how would i change the characters with blueprint.?

Let me explain a little more what i’m trying to do. I Have 3 buttons that appear with UMG when i startup the game. You then select one of them and it sets you to that class. So How would i Change the default “MyCharacter” To a differnt pawn blueprint. Would it work to just have a function from a blueprint interface inside of the button bind that sends button clicked to a event in the pawn that posses that pawn.? Or is there some node that changes the default “MyCharacter” to another pawn i have.

The controller should contain a blueprint function to posses a specified pawn.

Ok but isnt posses just for characters in a scene. How can i just switch the controllers blueprint itself?