java とかほとんど触ったこともないワケで。
ちょっくら java のコンストラクタの呼ばれ方が気になったので
実験してみた。
- SuperClass.java
public class SuperClass {
protected String status = "status :";
//1.引数なしスーパークラスコンストラクタ
public SuperClass()
{
status += " Super 1 Called";
}
//2.引数ありスーパークラスコンストラクタ
public SuperClass(Context context)
{
status += " Super 2 Called";
}
@Override
public String toString()
{
return status;
}
}
- SubClass.java
public class SubClass extends SuperClass{
private Context context;
//3.引数なしサブクラスコンストラクタ
public SubClass()
{
status += " Sub 1 Called";
}
//4.引数ありサブクラスコンストラクタ
public SubClass(Context _context)
{
status += " Sub 2 Called";
context = _context;
}
//結果表示
public void checkValue()
{
Toast.makeText(context, toString(), Toast.LENGTH_SHORT).show();
}
}
- MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SubClass subClass = new SubClass(this);
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
subClass.checkValue();
}
});
}
- activity_main.xml
んで実行結果が
status : Super 1 Called Sub 2 Called
なので、呼び出し順としては
1.スーパークラス引数なしコンストラクタ
4.サブクラス引数ありコンストラクタ
ってことか。
どのコンストラクタがどの順番で呼ばれるか、てのは実際やってみると
なるほどって感じですな。
0 件のコメント:
コメントを投稿