It seems that it is good to make the virtual methods private in order to separate the interfaces for following two clients - 1. clients that instantiate an object and call the
Yes, if you need to call the SaveData of another class, it needs to be accessible from that class - so public or protected.
public
protected