【初心者】Java質問・相談スレッド79【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0058デフォルトの名無しさん
2006/01/12(木) 02:29:00ちょっと、長文ですが読んでみてください。
�@staticなフィールドやメソッドにアクセスすることについて
変数(sのこと)でstaticのメソッドやフィールドを参照するのは、
禁止されているわけではありません。
クラスに属するという意味は、個々のインスタンスに関連付けされていないということ。
言い換えると、全てのインスタンスで共通のフィールド(メソッド)という意味です。
なので、クラスに属しているフィールドやメソッドを、インスタンスが格納されている変数で
参照するのは考え方が違いますよ!クラス名で参照して下さい!ってeclipseに警告されているだけです。
�Aスーパークラス/サブクラス間のフィールドやメソッドについて
スーパークラスと同じシグネチャ(メソッド名と引数の型と引数の順番のこと)を持つメソッドを
サブクラスで定義することをオーバーライドと呼びます。
「オーバーライド = 上書き」と思って下さい
スーパークラスと同名のフィールドをサブクラスで定義することを
オーバーライドとは呼びません。隠蔽と呼びます。
「隠蔽 = 隠しているだけ」と思って下さい。
なので、>>41 の例で説明すると
Super s = new Sub(); <-- 型はSuperでもインスタンスはSubを参照
System.out.println(s.d); <-- 隠蔽されているSuperのインスタンス変数dを参照
s.meth(); <-- 上書きされているSubクラスのインスタンスメソッドmeth()を参照
以上です。少しでも理解につながれば幸いです。
■ このスレッドは過去ログ倉庫に格納されています