class Animal {
void makeSound() {
System.out.println("Some generic sound");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("Woof!");
}
}
public class Main {
public static void main(String[] args) {
// Animal クラスã®ã‚ªãƒ–ジェクトを作æˆ
Animal animal = new Animal();
// Animal クラス㮠makeSound メソッドを呼ã³å‡ºã™
animal.makeSound();
// Dog クラスã®ã‚ªãƒ–ジェクトを作æˆ
Dog dog = new Dog();
// Dog クラス㮠makeSound メソッドを呼ã³å‡ºã™ï¼ˆã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå‘¼ã°ã‚Œã‚‹ï¼‰
dog.makeSound();
// アップã‚ャストを使用ã—㦠Animal クラスã®å‚照変数㧠Dog クラスã®ã‚ªãƒ–ジェクトをæ“作
Animal upcastedDog = new Dog();
// Animal クラスã®å‚照変数㧠Dog クラス㮠makeSound メソッドを呼ã³å‡ºã™ï¼ˆã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå‘¼ã°ã‚Œã‚‹ï¼‰
upcastedDog.makeSound();
}
}
ã“ã®ä¾‹ã§ã¯ã€Animal クラス㨠Dog クラスを作æˆã—ã€ãƒ¡ã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã§ãれãžã‚Œã®ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„ã¾ã™ã€‚ãã—ã¦ã€ã‚¢ãƒƒãƒ—ã‚ャストを使用ã—㦠Animal クラスã®å‚照変数㧠Dog クラスã®ã‚ªãƒ–ジェクトをæ“作ã—ã¦ã„ã¾ã™ã€‚
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘るアップã‚ャスト
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘るアップã‚ャストã¯ã€ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹åž‹ã®ã‚ªãƒ–ジェクトをã€ãれらã®å…±é€šã®è¦ªã‚¯ãƒ©ã‚¹åž‹ã«å¤‰æ›ã™ã‚‹ãƒ—ãƒã‚»ã‚¹ã§ã™ã€‚アップã‚ャストã«ã‚ˆã‚Šã€åクラス型ã®ã‚ªãƒ–ジェクトを親クラス型ã®å‚ç…§å¤‰æ•°ã§æ‰±ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®ä¸ã§ç‰¹ã«é‡è¦ãªæ¦‚念ã§ã‚りã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®å®Ÿç¾ã«å¯„与ã—ã¾ã™ã€‚
以下ã«ã€ã‚¢ãƒƒãƒ—ã‚ャストã®ä¸»ãªãƒã‚¤ãƒ³ãƒˆã¨ãã®è§£èª¬ã‚’示ã—ã¾ã™ã€‚
- 基本概念:
- アップã‚ャストã¯ã€åクラス型ã®ã‚ªãƒ–ジェクトを親クラス型ã«å¤‰æ›ã™ã‚‹æ“作を指ã—ã¾ã™ã€‚
- 例ãˆã°ã€
DogクラスãŒAnimalクラスを継承ã—ã¦ã„ã‚‹å ´åˆã€Dogクラスã®ã‚ªãƒ–ジェクトã¯Animalクラスã®å‚ç…§å¤‰æ•°ã§æ‰±ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
- 例題:
Animalクラスã¨DogクラスãŒã‚ã‚‹å ´åˆã€Dogクラスã®ã‚ªãƒ–ジェクトをAnimalクラスã®å‚ç…§å¤‰æ•°ã§æ“作ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚- ã“れã«ã‚ˆã‚Šã€å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„プãƒãƒ‘ティã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ãŒã€åクラス固有ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„プãƒãƒ‘ティã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®ä¸€ç’°:
- アップã‚ャストã¯ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®ä¸€éƒ¨ã§ã‚りã€ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトをåŒã˜åž‹ã®å‚照変数ã§çµ±ä¸€çš„ã«æ‰±ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
- ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ¼ãƒ‰ã®æŸ”軟性ãŒå‘上ã—ã€æ‹¡å¼µæ€§ãŒå¢—ã—ã¾ã™ã€‚
- 実行時ã®å‹•çš„ãªæŒ™å‹•:
- アップã‚ャストã«ã‚ˆã‚Šã€ã‚³ãƒ³ãƒ‘イル時ã«ã¯è¦ªã‚¯ãƒ©ã‚¹åž‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã—ã‹å‘¼ã³å‡ºã›ã¾ã›ã‚“ãŒã€å®Ÿè¡Œæ™‚ã«ã¯ã‚ªãƒ–ジェクトã®å®Ÿéš›ã®åž‹ã«åŸºã¥ã„ã¦é©åˆ‡ãªãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã³å‡ºã•れã¾ã™ã€‚
// アップã‚ャストã®ä¾‹
Animal animal = new Dog(); // Dog クラスã®ã‚ªãƒ–ジェクトを Animal クラスã®å‚ç…§å¤‰æ•°ã§æ‰±ã†
animal.makeSound(); // 実行時㫠Dog クラスã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れ㟠makeSound メソッドãŒå‘¼ã°ã‚Œã‚‹
アップã‚ャストã¯ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®åŸºæœ¬çš„ãªãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã§ã‚りã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ã¨æ‹¡å¼µæ€§ã‚’高ã‚ã‚‹é‡è¦ãªæ‰‹æ®µã§ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント