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 件のコメント:
コメントを投稿