// æ—¢å˜ã®æŠ½è±¡ã‚¯ãƒ©ã‚¹ Person
abstract class Person {
// æ—¢å˜ã®ãƒ•ィールドやメソッドãŒã‚ã‚‹ã¨ä»®å®š
private String name;
// 抽象メソッド displayInfo() を追åŠ
public abstract void displayInfo();
}
// 具象クラス Student
class Student extends Person {
// Student クラスã®å›ºæœ‰ã®ãƒ•ィールド
private int studentId;
// コンストラクタ
public Student(String name, int studentId) {
this.name = name;
this.studentId = studentId;
}
// displayInfo() メソッドã®å®Ÿè£…
@Override
public void displayInfo() {
System.out.println("Student ID: " + studentId);
System.out.println("Name: " + name);
// ä»–ã«ã‚‚å¿…è¦ãªæƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹å‡¦ç†ã‚’追åŠ
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Student クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
Student student1 = new Student("John Doe", 123456);
// displayInfo() メソッドを呼ã³å‡ºã—ã¦å¦ç”Ÿã®æƒ…å ±ã‚’è¡¨ç¤º
student1.displayInfo();
}
}
ã“ã®ä¾‹ã§ã¯ã€Person クラス㫠displayInfo() æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã€Student クラスã§ã“れをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦å¦ç”Ÿã®æƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹å®Ÿè£…ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚Main クラス㧠Student クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€displayInfo() メソッドを呼ã³å‡ºã™ã“ã¨ã§ã€å¦ç”Ÿã®æƒ…å ±ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
å‡ºåŠ›çµæžœï¼š
Student ID: 123456
Name: John Doe
具象クラス Student ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€displayInfo() メソッドを呼ã³å‡ºã—ãŸçµæžœã€å¦ç”Ÿã®IDã¨åå‰ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€Person 抽象クラス㫠displayInfo() 抽象メソッドãŒè¿½åŠ ã•れã¦ãŠã‚Šã€Student クラスãŒã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦å¦ç”Ÿã®æƒ…å ±ã‚’è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚Main クラス㧠Student クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€displayInfo() メソッドを呼ã³å‡ºã™ã“ã¨ã§ã€å¦ç”Ÿã®æƒ…å ±ãŒã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã«å‡ºåŠ›ã•れã¾ã™ã€‚
æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µ
æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µï¼ˆæ‹¡å¼µã¨ã¯ã€åˆ¥ã®è¨€è‘‰ã§ç¶™æ‰¿ã¨ã‚‚呼ã°ã‚Œã¾ã™ï¼‰ã¯ã€æ—¢å˜ã®æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’基ã«ã—ã¦æ–°ã—ã„æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’ä½œæˆã™ã‚‹ãƒ—ãƒã‚»ã‚¹ã§ã™ã€‚以下ã«ã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µã«é–¢ã™ã‚‹è§£èª¬ã‚’ã—ã¾ã™ã€‚
抽象クラスã®åŸºæœ¬:
抽象クラスã¯ã€å°‘ãªãã¨ã‚‚1ã¤ä»¥ä¸Šã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆæœªå®Ÿè£…ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼‰ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€å…·è±¡ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆå®Ÿè£…ãŒæä¾›ã•れã¦ã„るメソッド)もæŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚
abstract class Animal {
// 抽象メソッド
public abstract void makeSound();
// 具象メソッド
public void sleep() {
System.out.println("Zzz");
}
}
æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µ:
æ—¢å˜ã®æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’基ã«ã—ã¦æ–°ã—ã„æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’ä½œæˆã™ã‚‹å ´åˆã€extends ã‚ーワードを使用ã—ã¾ã™ã€‚æ–°ã—ã„æŠ½è±¡ã‚¯ãƒ©ã‚¹ã¯ã€è¦ªã‚¯ãƒ©ã‚¹ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã™ã‚‹ã‹ã€è‡ªèº«ã‚‚æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã§ãã¾ã™ã€‚
abstract class Bird extends Animal {
// Bird クラス㌠Animal ã‚¯ãƒ©ã‚¹ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®Ÿè£…
@Override
public void makeSound() {
System.out.println("Tweet tweet");
}
// Bird ã‚¯ãƒ©ã‚¹ç‹¬è‡ªã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰
public abstract void fly();
}
具象クラスã®ä½œæˆ:
æ–°ã—ã„æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’æ‹¡å¼µã—ãŸå¾Œã€ãã®ã‚¯ãƒ©ã‚¹ã‚’具象クラスã¨ã—ã¦å®Ÿè£…ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚具象クラスã¯ã€ã™ã¹ã¦ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã™ã‚‹ã‹ã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’æ›´ã«æ‹¡å¼µã—ã¦è¿½åŠ ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ã“ã¨ãŒæ±‚ã‚られã¾ã™ã€‚
class Sparrow extends Bird {
// Bird クラスã‹ã‚‰ç¶™æ‰¿ã—ãŸæŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ fly() ã®å®Ÿè£…
@Override
public void fly() {
System.out.println("Sparrow is flying");
}
}
åˆ©ç”¨ã¨æ‹¡å¼µã®ç¶™ç¶š:
ã“ã®ã‚ˆã†ã«ã—ã¦ä½œæˆã•れãŸã‚¯ãƒ©ã‚¹éšŽå±¤ã§ã¯ã€å…·è±¡ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã€ãれをã•ã‚‰ã«æ‹¡å¼µã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å…±é€šã®æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‹ã‚‰æ´¾ç”Ÿã—ãŸã€å…·ä½“çš„ã§ç‰¹æ®Šãªã‚¯ãƒ©ã‚¹ã‚’作æˆã§ãã¾ã™ã€‚
class Pigeon extends Bird {
@Override
public void fly() {
System.out.println("Pigeon is flying");
}
}
æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®æ‹¡å¼µã¯ã€ã‚¯ãƒ©ã‚¹éšŽå±¤ã‚’構築ã—ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを実ç¾ã™ã‚‹ãŸã‚ã®é‡è¦ãªæ‰‹æ®µã®ä¸€ã¤ã§ã™ã€‚派生クラスã§å…±é€šã®æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’æ‹¡å¼µã—ã€æ–°ã—ã„æ©Ÿèƒ½ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã§ã€æŸ”軟性ã¨å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚
「016 抽象クラスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント