Javaのprotectedの意味

Javaのアクセス修飾子protectedで少しハマったので、調べた内容をメモしておきます。

通常、protectedと指定されたフィールドやメソッドは「同一package内と、そのクラスを継承したサブクラス内からアクセスできる」と説明されます。私自身も同様の理解だったのですが、次のようなケースで予想外の挙動となりました。

クラスBaseとChildが別のpackageに属する場合、

package base;

public class Base {
	
	protected void baseMethod() {
		System.out.println("Base method.");
	}
	
}
package child;

import base.Base;

public class Child extends Base {

	public void childMethod(Base base) {
		base.baseMethod();	// NG
	}
	
}

Childクラスの中でBaseクラスの引数を受け取ってbaseMethod()を呼び出そうとすると、”The method baseMethod() from the type Base is not visible”と怒られてしまうのです。
Continue reading →

Google DevFest 2010に行ってきました。

おかげさまで参加証をゲットできたのでGoogle DevFest 2010に行ってきました。
すでにこちらのzegenvsさんのブログに(英語がわからず私がさっぱり?だった部分も含めて)詳しいメモがあるので、内容についてはサラッと流して私が撮影した写真と軽い説明を。

DevFest受付付近

DevFest受付付近

Continue reading →