public class Person {
private String name;
private int age;
// デフォルトコンストラクタ
public Person() {
// 別ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™
this("Unknown", 18);
}
// 引数ã¤ãコンストラクタ
public Person(String name, int age) {
// コンストラクタ本体ã®å®Ÿè£…
this.name = name;
this.age = age;
}
// ä»–ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™ãƒ¡ã‚½ãƒƒãƒ‰
public void setDetails(String name, int age) {
// 別ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™
this.name = name;
this.age = age;
}
// ゲッターメソッド(çœç•¥ï¼‰
}
ã“ã®è§£ç”例ã§ã¯ã€ãƒ‡ãƒ•ォルトコンストラクタãŒå¼•æ•°ã¤ãコンストラクタを呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€æ–°ã—ã setDetails ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’通ã˜ã¦ã‚‚別ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ setDetails メソッド内ã§åˆ¥ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™ã“ã¨ã§ã€åŒã˜åˆæœŸåŒ–処ç†ã‚’利用ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
this
this ã¯ã€Java言語ãªã©ã®å¤šãã®ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã§ä½¿ç”¨ã•れる特殊ãªã‚ーワードã§ã€ã‚¯ãƒ©ã‚¹å†…ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„コンストラクタ内ã§ã€ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„コンストラクタãŒå±žã—ã¦ã„るインスタンス(オブジェクト)自体を指ã™å‚ç…§ã§ã™ã€‚以下㫠this ã®ä¸»ãªç”¨é€”を解説ã—ã¾ã™ã€‚
1.ç¾åœ¨ã®ã‚ªãƒ–ジェクトã®å‚ç…§:
this ã¯ã€ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„コンストラクタを呼ã³å‡ºã—ã¦ã„るインスタンスを指ã—ã¾ã™ã€‚メソッド内ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¹å†…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚„メソッドã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
public class MyClass {
private int value;
public void setValue(int value) {
// メソッドã®å¼•æ•°ã¨ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®åå‰ãŒåŒã˜å ´åˆã€thisを使用ã—ã¦åŒºåˆ¥
this.value = value;
}
}
2.コンストラクタ内ã§åˆ¥ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™:
コンストラクタ内ã§åŒã˜ã‚¯ãƒ©ã‚¹å†…ã®åˆ¥ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™å ´åˆã€this ã‚ーワードを使用ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒã‚§ãƒ¼ãƒ³ã‚’構築ã§ãã¾ã™ã€‚
public class MyClass {
private int value;
public MyClass() {
// 別ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™
this(0);
}
public MyClass(int value) {
this.value = value;
}
}
3.メソッドã®ä¸ã§è‡ªåˆ†è‡ªèº«ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã™:
メソッド内ã§è‡ªåˆ†è‡ªèº«ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã™å ´åˆã€return this; ã®ã‚ˆã†ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ã“れを利用ã™ã‚‹ã¨ã€ãƒ¡ã‚½ãƒƒãƒ‰ãƒã‚§ãƒ¼ãƒ³ã‚’構築ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
public class MyClass {
private int value;
public MyClass setValue(int value) {
this.value = value;
return this;
}
}
上記ã®ä¾‹ã§ã¯ã€setValue メソッドãŒè‡ªåˆ†è‡ªèº«ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚
4.インナークラスã®å ´åˆ:
インナークラス(内部クラス)ã®ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§å¤–å´ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‚ç…§ã™ã‚‹éš›ã«ã‚‚ this を使用ã—ã¾ã™ã€‚外å´ã®ã‚¯ãƒ©ã‚¹ã® this ã¨åŒºåˆ¥ã™ã‚‹ãŸã‚ã«ã€å¤–å´ã‚¯ãƒ©ã‚¹.this ã®ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚
public class OuterClass {
private int value;
public class InnerClass {
public void setValue(int value) {
// InnerClass内ã§OuterClassã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‚ç…§ã™ã‚‹
OuterClass.this.value = value;
}
}
}
ã“れらã®ä½¿ã„æ–¹ã«ã‚ˆã‚Šã€this ã‚ーワードã¯ã‚¯ãƒ©ã‚¹å†…ã§ã®ãƒ¡ãƒ³ãƒå¤‰æ•°ã‚„メソッドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒã‚§ãƒ¼ãƒ³ã®æ§‹ç¯‰ã€ãƒ¡ã‚½ãƒƒãƒ‰ãƒã‚§ãƒ¼ãƒ³ã®å®Ÿç¾ãªã©ã€ã‚¯ãƒ©ã‚¹å†…ã§ã®ã‚³ãƒ¼ãƒ‰ã®æ˜Žç¢ºæ€§ã‚„柔軟性をå‘上ã•ã›ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚
コンストラクタã§ãƒ—ãƒãƒ‘ãƒ†ã‚£ã‚’åˆæœŸåŒ–ã™ã‚‹ã¨ãã«thisãŒãªãœã„ã‚‹ã®ï¼Ÿ
コンストラクタã«å¼•数を渡ã—ã¦ãƒ—ãƒãƒ‘ãƒ†ã‚£ã‚’åˆæœŸåŒ–ã™ã‚‹éš›ã« this ã‚ーワードを使用ã™ã‚‹ä¸»ãªç†ç”±ã¯ã€åŒã˜åå‰ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ï¼ˆãƒ¡ãƒ³ãƒå¤‰æ•°ï¼‰ã¨ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã®å¼•æ•°åãŒè¡çªã™ã‚‹ã“ã¨ã‚’回é¿ã™ã‚‹ãŸã‚ã§ã™ã€‚以下ã«ã€ã“ã®ç†ç”±ã‚’詳ã—ã説明ã—ã¾ã™ã€‚
1.åå‰ã®è¡çªã‚’回é¿ã™ã‚‹:
コンストラクタã®å¼•æ•°ã¨ã‚¯ãƒ©ã‚¹å†…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ãŒåŒã˜åå‰ã®å ´åˆã€é€šå¸¸ã®ä»£å…¥æ–‡ã ã‘ã§ã¯ã©ã¡ã‚‰ãŒã©ã¡ã‚‰ã‚’指ã—ã¦ã„ã‚‹ã®ã‹ãŒæ˜Žç¢ºã§ã¯ã‚りã¾ã›ã‚“。ã“ã®ã¨ãã€this ã‚ーワードを使ã£ã¦ã€ãã®å€¤ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã§ã‚ã‚‹ã“ã¨ã‚’明示的ã«ç¤ºã—ã¾ã™ã€‚
public class MyClass {
private int value;
public MyClass(int value) {
// åå‰ã®è¡çªã‚’回é¿ã™ã‚‹ãŸã‚ã«thisを使用
this.value = value;
}
}
上記ã®ä¾‹ã§ã¯ã€value ã¨ã„ã†åå‰ãŒã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã®å¼•æ•°ã¨ã‚¯ãƒ©ã‚¹ã®ãƒ•ィールドã«å…±é€šã—ã¦ã„ã¾ã™ã€‚this を使ã£ã¦ã€value ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã¾ã™ã€‚
2.クラス内ã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã®æ˜Žç¢ºãªåŒºåˆ¥:
this ã‚ーワードを使用ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å†…ã§ã‚¯ãƒ©ã‚¹å†…ã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„フィールドã¨ã®æ˜Žç¢ºãªåŒºåˆ¥ãŒä»˜ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ¡ãƒ³ãƒå¤‰æ•°ã¨å¼•æ•°ã®é•ã„ãŒã¯ã£ãりã—ã€ã‚³ãƒ¼ãƒ‰ã®å¯èªæ€§ãŒå‘上ã—ã¾ã™ã€‚
public class MyClass {
private int value;
public MyClass(int value) {
// インスタンス変数ã«å¼•æ•°ã®å€¤ã‚’代入
this.value = value;
// ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ãªã©ã®æ“作もå¯èƒ½
doSomething();
}
public void doSomething() {
// クラス内ã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰
// ...
}
}
上記ã®ä¾‹ã§ã¯ã€doSomething メソッドãŒã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å†…ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚this ã‚ーワードを使用ã™ã‚‹ã“ã¨ã§ã€value ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã§ã‚ã‚‹ã“ã¨ãŒæ˜Žç¤ºã•れã€åŒã˜åå‰ã®å¼•æ•°ã¨åŒºåˆ¥ã•れã¾ã™ã€‚
ã“ã®ã‚ˆã†ã«ã€this ã‚ーワードを使用ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å†…ã§ã®å¤‰æ•°ã®å‚ç…§ãŒæ˜Žç¢ºã«ãªã‚Šã€ã‚³ãƒ¼ãƒ‰ã®å¯èªæ€§ãŒå‘上ã—ã¾ã™ã€‚
「011 コンストラクタã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント