Question: what is the difference between with sharing and without sharing?
Answer: With Sharing - Enforce the sharing rules that apply to current user. Without Sharing - Doesn't enforce the sharing rules. If a class is not declared as either with or without sharing, the current sharing rules remain in effect.