If your site has the Soapbox CMS (Does my site have the Soapbox CMS?), It's possible to do this - but a little tricky.
Calendars can use taxonomy terms to display events. So, you could have a calendar that only displays events that have been tagged with the term "public."
However, this only works inclusively, not exclusively. What that means is, you can say "show all of the events that have xxx term," but you can't say, "Don't show any events that have yyy term."
So, you can't exclude events that are tagged with "private" for example.
What we usually recommend is that you you set your calendar to only show event that are tagged as "public" and then tag all of your public events with that term. That way, the non-tagged events will not show up in the calendar.
For more info on using Taxonomy to create and assign terms, take a look at these articles: http://support.picnet.net/forums/307440-Taxonom