一番わかり易いのは、C#にはプロパティがあるので、フィールド○○に対して、get○○、set○○といったメソッドをいちいち一つ一つ作らなくても良い。とかあります。
Java
1private int num;
2public void setNum(int n){
3 num = n;
4}
5public int getNum(){
6 return num;
7}
8
9// アクセス
10n = x.getNum();
11x.setNum(n);
みたいな記述が、
C#
1public int num {get; set;}
2
3//アクセス
4n = x.num;
5x.num = n;
と書くだけで済みます。
アクセス側もまるでフィールドを直接読み書きしているかの様な書き方になりますが、
内部的にはアクセサメソッドが呼ばれています。
getだけsetだけにして、書き込み専用、読み出し専用のプロパティにすることも、
メソッドの中に処理を入れることもできます。
これのおかげでフィールドの数だけアクセサメソッドを作らなくても良くなりました。