Javaã«ãŠã„ã¦ç¶™æ‰¿ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ï¼ˆOOP)ã®åŸºæœ¬çš„ãªæ¦‚念ã§ã‚りã€Javaã®ç‰¹å¾´ã®ä¸€ã¤ã§ã™ã€‚継承ã¯ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ã‚’高ã‚ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ§‹é€ をより効果的ã«çµ„織化ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚以下ã«ã€Javaå¦ç¿’ã«ãŠã„ã¦ç¶™æ‰¿ãŒé‡è¦ã§ã‚ã‚‹ç†ç”±ã‚’ã„ãã¤ã‹æŒ™ã’ã¦ã¿ã¾ã—ょã†ã€‚
- コードã®å†åˆ©ç”¨æ€§: 継承ã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã®æ©Ÿèƒ½ã‚’å†åˆ©ç”¨ã—ã¦æ–°ã—ã„クラスを作æˆã§ãã¾ã™ã€‚基底クラス(親クラスã¾ãŸã¯ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ï¼‰ã®æ©Ÿèƒ½ã‚’サブクラス(åクラスã¾ãŸã¯æ´¾ç”Ÿã‚¯ãƒ©ã‚¹ï¼‰ã§å¼•ãç¶™ãã“ã¨ãŒã§ãã€åŒã˜ã‚³ãƒ¼ãƒ‰ã‚’何度も書ãå¿…è¦ãŒã‚りã¾ã›ã‚“。ã“れã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿å®ˆæ€§ãŒå‘上ã—ã€ã‚³ãƒ¼ãƒ‰ã®å†—é•·æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚
- プãƒã‚°ãƒ©ãƒ ã®æ§‹é€ 化: 継承ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ§‹é€ をより効果的ã«çµ„織化ã™ã‚‹æ‰‹æ®µã§ã™ã€‚関連ã™ã‚‹æ©Ÿèƒ½ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã‚’階層的ã«é…ç½®ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¼ãƒ‰ã®ç†è§£ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚ã¾ãŸã€ã‚¯ãƒ©ã‚¹éšŽå±¤ã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ‹¡å¼µæ€§ã‚’å‘上ã•ã›ã€å°†æ¥ã®å¤‰æ›´ã«å¯¾å¿œã—ã‚„ã™ãã—ã¾ã™ã€‚
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®ã‚µãƒãƒ¼ãƒˆ: 継承ã¯ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®å®Ÿç¾ã«å¯„与ã—ã¾ã™ã€‚ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã¯ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åを使用ã—ã¦ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ç•°ãªã‚‹å‹•作をå¯èƒ½ã«ã™ã‚‹æ¦‚念ã§ã™ã€‚サブクラスãŒåŸºåº•クラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã“ã¨ã§ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ç•°ãªã‚‹å‹•作を実ç¾ã§ãã¾ã™ã€‚
- 抽象クラスã¨ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã®å®Ÿç¾: ç¶™æ‰¿ã¯æŠ½è±¡ã‚¯ãƒ©ã‚¹ãŠã‚ˆã³ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚抽象クラスã¯ä¸€éƒ¨ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã—ã€ä¸€éƒ¨ã‚’抽象メソッドã¨ã—ã¦å®šç¾©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚インターフェースã¯ãƒ¡ã‚½ãƒƒãƒ‰ã®ã‚·ã‚°ãƒãƒãƒ£ã®ã¿ã‚’æä¾›ã—ã¾ã™ã€‚ã“ã‚Œã‚‰ã®æ¦‚念を使用ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¹ã®è¨è¨ˆã‚’より柔軟ã«è¡Œã†ã“ã¨ãŒã§ãã¾ã™ã€‚
継承ã®é©åˆ‡ãªä½¿ç”¨ã¯ã€ã‚³ãƒ¼ãƒ‰ã®ç†è§£ã‚’容易ã«ã—ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æŸ”è»Ÿæ€§ã¨æ‹¡å¼µæ€§ã‚’å‘上ã•ã›ã¾ã™ã€‚ãŸã ã—ã€éŽåº¦ãªç¶™æ‰¿ã¯ã‚³ãƒ¼ãƒ‰ã®è¤‡é›‘æ€§ã‚’å¢—åŠ ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€æ…Žé‡ã«è¨ˆç”»ã—ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
- ç·´ç¿’å•題
- 継承ã®åŸºæœ¬
- 暗黙的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å‘¼ã³å‡ºã—
- 明示的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å‘¼ã³å‡ºã—
- protected修飾å
- オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã®åˆ©ç”¨
- 明示的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—
- finalメソッド
- Objectクラスã®ç¶™æ‰¿
ç·´ç¿’å•題
継承ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®ä¸ã§éžå¸¸ã«é‡è¦ãªæ¦‚念ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã®ç‰¹æ€§ã‚„機能をå†åˆ©ç”¨ã—ã€æ–°ã—ã„クラスを効果的ã«è¨è¨ˆã§ãã¾ã™ã€‚ã“ã®æ¦‚念を深ãç†è§£ã™ã‚‹ã“ã¨ã¯ã€Javaプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦åŸºæœ¬çš„ã‹ã¤ä¸å¯æ¬ ãªã‚¹ã‚ルã®ä¸€ã¤ã§ã™ã€‚
今回ã®ç·´ç¿’å•題ã§ã¯ã€ç¶™æ‰¿ã®åŸºæœ¬çš„ãªåŽŸå‰‡ã‚’ç¢ºèªã—ãªãŒã‚‰ã€å®Ÿéš›ã®ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°çµŒé¨“を通ã˜ã¦ç†è§£ã‚’æ·±ã‚ã¦ã„ãã“ã¨ã‚’目指ã—ã¾ã™ã€‚æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã‹ã‚‰æ–°ã—ã„クラスを派生ã•ã›ã€ã©ã®ã‚ˆã†ã«æ©Ÿèƒ½ã‚’è¿½åŠ ãƒ»å¤‰æ›´ã™ã‚‹ã‹ã‚’考ãˆãªãŒã‚‰é€²ã‚ã¦ã„ãã“ã¨ã§ã€ç¶™æ‰¿ã®æŸ”軟性ã¨åŠ¹æžœã‚’ä½“æ„Ÿã§ãã‚‹ã§ã—ょã†ã€‚
ã“ã®ç·´ç¿’å•題を通ã˜ã¦ã€ç¶™æ‰¿ã‚’使ã£ãŸåŠ¹æžœçš„ãªã‚³ãƒ¼ãƒ‰ã®è¨è¨ˆã¨ã€ã‚ªãƒ–ジェクト指å‘ã®æ€è€ƒæ–¹æ³•ã«æ…£ã‚Œã¦ã„ãã“ã¨ãŒæœŸå¾…ã•れã¾ã™ã€‚ãれã§ã¯ã€å•題ã«å–り組む際ã¯ã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã¨æ–°ã—ã„クラスã®é–¢ä¿‚を考慮ã—ãªãŒã‚‰ã€ç¶™æ‰¿ãŒã‚‚ãŸã‚‰ã™åˆ©ç‚¹ã‚’実感ã—ã¦ã¿ã¦ãã ã•ã„。
継承ã®åŸºæœ¬
014-001 å•題 解ç”例
014-002 å•題 解ç”例
014-003 å•題 解ç”例
014-004 å•題 解ç”例
014-005 å•題 解ç”例
014-006 å•題 解ç”例
014-007 å•題 解ç”例
014-008 å•題 解ç”例
014-009 å•題 解ç”例
暗黙的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å‘¼ã³å‡ºã—
014-010 å•題 解ç”例
014-011 å•題 解ç”例
014-012 å•題 解ç”例
明示的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿å‘¼ã³å‡ºã—
014-013 å•題 解ç”例
014-014 å•題 解ç”例
014-015 å•題 解ç”例
protected修飾å
014-016 å•題 解ç”例
014-017 å•題 解ç”例
014-018 å•題 解ç”例
014-019 å•題 解ç”例
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã®åˆ©ç”¨
014-020 å•題 解ç”例
014-021 å•題 解ç”例
014-022 å•題 解ç”例
014-023 å•題 解ç”例
014-024 å•題 解ç”例
014-025 å•題 解ç”例
014-026 å•題 解ç”例
014-027 å•題 解ç”例
014-028 å•題 解ç”例
014-029 å•題 解ç”例
明示的ãªã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—
014-030 å•題 解ç”例
014-031 å•題 解ç”例
014-032 å•題 解ç”例
014-033 å•題 解ç”例
finalメソッド
014-034 å•題 解ç”例
014-035 å•題 解ç”例
014-036 å•題 解ç”例
Objectクラスã®ç¶™æ‰¿
014-037 å•題 解ç”例
014-038 å•題 解ç”例
014-039 å•題 解ç”例