// Shapeクラス
class Shape {
// protectedãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°
protected String shapeColor;
// protectedãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿
protected Shape(String color) {
this.shapeColor = color;
}
}
// Circleクラス
class Circle extends Shape {
// Circleクラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿
// Shapeクラスã®protectedãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã—ã¦shapeColorã‚’è¨å®š
public Circle(String color) {
super(color);
}
// ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½
}
ã“ã®ä¾‹ã§ã¯ã€Shapeクラスã«protectedãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒã‚りã€Circleクラスã¯Shapeクラスを継承ã—ã¦ã„ã¾ã™ã€‚Circleクラスã§ã¯ã€è‡ªèº«ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§super(color)を使用ã—ã¦Shapeクラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã—ã€shapeColorã‚’è¨å®šã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Circleクラスã¯shapeColorã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
protectedãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿
protectedãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯ã€ã‚¯ãƒ©ã‚¹ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒåŒä¸€ãƒ‘ッケージ内ã®ä»–ã®ã‚¯ãƒ©ã‚¹ã‚„ãã®ã‚µãƒ–クラスã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€åŒã˜ãƒ‘ッケージ内ã®ä»–ã®ã‚¯ãƒ©ã‚¹ã‚„ãã®ã‚µãƒ–クラスãŒã€ãã®ã‚¯ãƒ©ã‚¹ã®protectedãªãƒ¡ãƒ³ãƒãƒ¼ï¼ˆãƒ•ィールドやメソッド)ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
クラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’protectedã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãã®ã‚¯ãƒ©ã‚¹ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒåŒä¸€ãƒ‘ッケージ内ã®ä»–ã®ã‚¯ãƒ©ã‚¹ã‚„ãã®ã‚µãƒ–クラス以外ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã¨ã„ã†åˆ¶ç´„ã¯ã€ä¸»ã«ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã®ä¸€ç’°ã¨ã—ã¦æ©Ÿèƒ½ã—ã¾ã™ã€‚ã“ã®åˆ¶ç´„ã«ã‚ˆã‚Šã€ã‚¯ãƒ©ã‚¹ã®å†…部実装ã®è©³ç´°ã‚’外部ã«å…¬é–‹ã›ãšã€ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトã®ç”Ÿæˆã‚„åˆæœŸåŒ–ãŒåˆ¶é™ã•れã¾ã™ã€‚以下ã¯ã€ã“ã®åˆ¶ç´„ãŒã‚‚ãŸã‚‰ã™æ„味や利点ã«ã¤ã„ã¦ã®ã„ãã¤ã‹ã®ãƒã‚¤ãƒ³ãƒˆã§ã™ã€‚
- カプセル化ã®ä¿ƒé€²: クラスã®å†…部実装ã®è©³ç´°ã‚’éš è”½ã™ã‚‹ãŸã‚ã€åŒã˜ãƒ‘ッケージ内ã§ã‚ã£ã¦ã‚‚外部ã‹ã‚‰ç›´æŽ¥ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã›ãªã„よã†ã«ãªã‚Šã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚¯ãƒ©ã‚¹ã®ã‚«ãƒ—セル化ãŒä¿ƒé€²ã•れã€å†…部ã®å¤‰æ›´ãŒå¤–部コードã«å½±éŸ¿ã‚’与ãˆã«ãããªã‚Šã¾ã™ã€‚
- 内部ä¸å¤‰æ€§ã®ä¿æŒ: クラス内部ã®çŠ¶æ…‹ã‚„ä¸å¤‰æ€§ã‚’ç¶æŒã™ã‚‹ãŸã‚ã«ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒåŒä¸€ãƒ‘ッケージ内ã®ã‚¯ãƒ©ã‚¹ã‚„サブクラス以外ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„よã†ã«ã—ã¾ã™ã€‚外部ã‹ã‚‰ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã“ã¨ã§ã€æ„図ã—ãªã„å¤‰æ›´ã‚„åˆæœŸåŒ–ãŒé˜²ãŒã‚Œã¾ã™ã€‚
- APIã®æ•´ç†ã¨æŠ½è±¡åŒ–: パッケージ外ã®ã‚¯ãƒ©ã‚¹ã‚„モジュールãŒç›´æŽ¥ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’使用ã§ããªã„ãŸã‚ã€APIãŒæ•´ç†ã•れã€ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ç”Ÿæˆæ–¹æ³•ãŒå¤–部ã«ã‚ˆã‚Šå޳坆ã«ç®¡ç†ã•れã¾ã™ã€‚ã¾ãŸã€æŠ½è±¡åŒ–ãŒå¼·åŒ–ã•れã€å¤–部ã®åˆ©ç”¨è€…ãŒå†…部実装ã®è©³ç´°ã«ä¾å˜ã™ã‚‹ã“ã¨ãŒæ¸›ã‚Šã¾ã™ã€‚
- ã‚»ã‚ュリティã®å‘上: クラス内部ã§é‡è¦ãªåˆæœŸåŒ–やセットアップãŒè¡Œã‚れã¦ã„ã‚‹å ´åˆã€ãれãŒåˆ¶é™ã•れるã“ã¨ã§ã‚»ã‚ュリティ上ã®ãƒªã‚¹ã‚¯ãŒä½Žæ¸›ã—ã¾ã™ã€‚外部ã‹ã‚‰ä¸æ£ãªåˆæœŸåŒ–ã‚„æ“作を制é™ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ç·ã˜ã¦ã€ã‚¯ãƒ©ã‚¹ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒåŒä¸€ãƒ‘ッケージ内ã®ä»–ã®ã‚¯ãƒ©ã‚¹ã‚„サブクラス以外ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã“ã¨ã¯ã€ã‚ªãƒ–ジェクト指å‘ã®åŽŸå‰‡ã§ã‚るカプセル化やセã‚ュリティã®è¦³ç‚¹ã‹ã‚‰æœ‰ç›Šã§ã™ã€‚
「014 継承ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント