// 抽象クラス AbstractClass
abstract class AbstractClass {
// 抽象メソッドや通常ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚€
abstract void abstractMethod();
void normalMethod() {
// 通常ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
}
}
// インターフェイス InterfaceA
interface InterfaceA {
// InterfaceAã®ãƒ¡ã‚½ãƒƒãƒ‰
void methodA();
}
// æ–°ã—ã„インターフェイス InterfaceB
interface InterfaceB {
// InterfaceBã®ãƒ¡ã‚½ãƒƒãƒ‰
void methodB();
}
// クラス ConcreteClass
class ConcreteClass extends AbstractClass implements InterfaceA, InterfaceB {
// AbstractClassã‹ã‚‰ã®ç¶™æ‰¿ã¨InterfaceAã€InterfaceBã®å®Ÿè£…
// インターフェイスAã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void methodA() {
// 実装
}
// インターフェイスBã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void methodB() {
// 実装
}
// AbstractClassã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
void abstractMethod() {
// 実装
}
}
ã“ã®ä¾‹ã§ã¯ã€AbstractClass ãŒæŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã¨é€šå¸¸ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã¿ã€InterfaceA 㨠InterfaceB ãŒãれを拡張ã—ã¾ã™ã€‚最後ã«ã€ConcreteClass ㌠AbstractClass を継承ã—ã€InterfaceA 㨠InterfaceB を実装ã—ã¾ã™ã€‚å„メソッドã®å®Ÿè£…ã¯å•題ã«å¿œã˜ã¦è¿½åŠ ã—ã¦ãã ã•ã„。
抽象クラスã¨ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイス
抽象クラスã¨ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã¯ã€Javaã«ãŠã„ã¦ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã§ä½¿ã‚れる2ã¤ã®ç•°ãªã‚‹æ¦‚念ã§ã™ã€‚以下ã«ãれãžã‚Œã®ç‰¹å¾´ã‚’解説ã—ã¾ã™ã€‚
抽象クラス (Abstract Class):
- 抽象メソッドをå«ã‚€:
- æŠ½è±¡ã‚¯ãƒ©ã‚¹ã¯æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆå®Ÿè£…ãŒãªã„メソッド)をå«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã¯ã‚µãƒ–クラスã§å®Ÿè£…ã•れるã“ã¨ã‚’期待ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ã€‚
- 通常ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚€:
- 抽象クラスã¯é€šå¸¸ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆå®Ÿè£…ãŒã‚るメソッド)もå«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ç›´æŽ¥å®Ÿè£…ã•れã€ã‚µãƒ–クラスã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã“ã¨ã‚‚ã‚りã¾ã™ã€‚
- フィールドやコンストラクタをå«ã‚€:
- 抽象クラスã¯ãƒ•ィールドやコンストラクタをå«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚
- å˜ä¸€ç¶™æ‰¿ã®åˆ¶ç´„:
- 1ã¤ã®æŠ½è±¡ã‚¯ãƒ©ã‚¹ã—ã‹ç›´æŽ¥ç¶™æ‰¿ã§ããªã„(å˜ä¸€ç¶™æ‰¿ï¼‰ã€‚
abstract class AbstractClass {
// 抽象メソッド
abstract void abstractMethod();
// 通常ã®ãƒ¡ã‚½ãƒƒãƒ‰
void normalMethod() {
// 実装
}
}
インターフェイス (Interface):
- 抽象メソッドã®ã¿:
- ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã¯æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã®ã¿ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§å…¨ã¦ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚
- 定数をå«ã‚€:
- インターフェイスã¯å®šæ•°ï¼ˆ
public static final)もå«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚
- インターフェイスã¯å®šæ•°ï¼ˆ
- 複数インターフェイスã®å®Ÿè£…:
- クラスã¯è¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’åŒæ™‚ã«å®Ÿè£…ã§ãã¾ã™ã€‚
interface InterfaceA {
// 抽象メソッド
void methodA();
// 定数
int CONSTANT_A = 1;
}
interface InterfaceB {
// 抽象メソッド
void methodB();
// 定数
int CONSTANT_B = 2;
}
class ConcreteClass implements InterfaceA, InterfaceB {
// インターフェイスAã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void methodA() {
// 実装
}
// インターフェイスBã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void methodB() {
// 実装
}
}
ã©ã¡ã‚‰ã‚’é¸ã¶ã¹ãã‹ï¼Ÿ
- 抽象クラス:
- 共通ã®å®Ÿè£…ã‚’æä¾›ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã‚„ã€ç¶™æ‰¿é–¢ä¿‚ã«ã‚るクラス間ã§ãƒ•ィールドを共有ã—ãŸã„å ´åˆã«é©ã—ã¦ã„ã¾ã™ã€‚
- インターフェイス:
- ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹é–“ã§å…±é€šã®æŒ¯ã‚‹èˆžã„を定義ã—ãŸã„å ´åˆã‚„ã€è¤‡æ•°ã®ã‚¯ãƒ©ã‚¹ã«åŒæ™‚ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã•ã›ãŸã„å ´åˆã«é©ã—ã¦ã„ã¾ã™ã€‚
「017 インターフェイスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント