For a dataset that has its permissions set as 'public,' all views and visualizations based off of it will be 'public' as well. The permissions of these views/visualizations cannot be made private. If you want to create private views and visualizations off of a public dataset (in case you'd like to review them before making them public) here are your options:
Private views - Within a working copy of your dataset, you are still allowed to create filters - just not save them.
Private visualizations - Your only option here is to download the published dataset, re-upload and publish it as a private dataset, as the Visualize panel is not available within working copies.
You can however toggle the permissions from views and visualizations between 'private' and 'public' when the underlying dataset is private.
Note: When you change the permissions of a dataset from public to private all of it's views and visualizations will be made private as well. You will need to go in manually to any view or visualization to change it's permissions to 'public' if you want it to be so.
Also, there is not a way to keep the parent set public, but all subsequent views private.