全部publicじゃダメなの?アクセス修飾子について
アクセス修飾子とは、メソッドやメンバ変数、クラスなどにアクセス権を持たせてあげることである
アクセス修飾子の種類は
public 全てのクラスからアクセス可能
protected 同じクラス内、同じパッケージ、サブクラスからアクセス可能
なし 同じクラス内、同じパッケージからアクセス可能
private 同じクラス内のみアクセス可能
他のクラスからアクセス修飾子がなし(デフォルト)のメンバ変数を使おうと思っても「publicじゃないとダメ!」とエラーがでる。
それなら別に全部publicでよくね?
一人でちょっとしたプログラムを書くなら全部publicで問題ない!
しかし…複数で大規模なプログラムを書くとなると話は別でアクセス修飾子は重要になる。
この値を他のクラスから弄くられると正常に動かなくなるみたいな値をprivateにしておくと安心できる。
interfaceっているの? 初心者なりに理解したInterfaceの利点について
Javaの勉強中に interface というものにつまずいた。
interface とはこんなの
interface Play { void play(); }
中身がないのになぜあるんだ? 無くても変わらないんじゃないの? と思っていろいろ調べてみた。
どうやらこういうことらしい
例えば、生徒というinterfaceがあって、get宿題というメソッドがある。
interface 生徒 { public String get宿題(); }
生徒interfaceを実装(implements)した佐藤君と鈴木さんがいる。
class 佐藤君 implements 生徒 { public String get宿題() { return "国語の宿題"; } class 鈴木さん implements 生徒 { public String get宿題() { return "数学の宿題"; }
先生クラスからは、生徒が 誰であっても 宿題を手にすることができる。
class 先生 { void 宿題の回収(生徒 生徒){ 生徒の宿題 = 生徒.get宿題(); } }
宿題の回収メソッドの引数に生徒クラス型の佐藤君を入れると佐藤君から宿題を手にすることができる。
鈴木さんや新しい生徒が追加されてもメソッドの引数として渡してあげることによって先生は宿題を回収することができる。
つまりどういうこと?
先生は
「佐藤君宿題を提出してねー」
「鈴木さん宿題を提出してねー」
って言うより
「生徒は宿題を提出してねー」
って言う方が楽じゃないか!ということ
(間違えていたらコメントください)