class Animal {
void makeSound() {
System.out.println("Generic animal sound");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Woof! Woof!");
}
}
public class Main {
public static void main(String[] args) {
// Animal クラスã®ã‚ªãƒ–ジェクトを作æˆ
Animal animal = new Animal();
// Animal クラスã®ã‚ªãƒ–ジェクトを Dog クラスã«ãƒ€ã‚¦ãƒ³ã‚ャスト
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
// ダウンã‚ャスト後ã€Dog クラスã®ç‰¹æœ‰ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
dog.bark();
} else {
System.out.println("Animal is not a Dog");
}
}
}
ã“ã®ä¾‹ã§ã¯ã€ã¾ãš Animal クラスã®ã‚ªãƒ–ジェクトを作æˆã—ã€instanceof 演算åを使用ã—ã¦ãã®ã‚ªãƒ–ジェクト㌠Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã‚’確èªã—ã¦ã„ã¾ã™ã€‚ã‚‚ã— Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚れã°ã€ãã®ã‚ªãƒ–ジェクトを Dog クラスã«ãƒ€ã‚¦ãƒ³ã‚ャストã—ã¦ã€bark メソッドを呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚ダウンã‚ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã—ãªã„å ´åˆã«ã¯ã€é©åˆ‡ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘るダウンã‚ャスト
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘るダウンã‚ャストã¯ã€è¦ªã‚¯ãƒ©ã‚¹åž‹ã®å¤‰æ•°ã‚’åクラス型ã®å¤‰æ•°ã«å¤‰æ›ã™ã‚‹æ“作ã§ã™ã€‚ã“れã«ã¯ã„ãã¤ã‹ã®ãƒã‚¤ãƒ³ãƒˆãŒã‚りã¾ã™ã€‚
- アップã‚ャストã®å‰ææ¡ä»¶:
- ダウンã‚ャストを行ã†å‰ã«ã€å…ƒã€…ã®ã‚ªãƒ–ジェクトãŒãƒ€ã‚¦ãƒ³ã‚ャスト先ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã«
instanceof演算åãŒåˆ©ç”¨ã•れã¾ã™ã€‚ instanceof演算åã¯ã€å·¦è¾ºã®ã‚ªãƒ–ジェクトãŒå³è¾ºã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚れã°trueã‚’è¿”ã—ã€ãã†ã§ãªã‘れã°falseã‚’è¿”ã—ã¾ã™ã€‚
- ダウンã‚ャストを行ã†å‰ã«ã€å…ƒã€…ã®ã‚ªãƒ–ジェクトãŒãƒ€ã‚¦ãƒ³ã‚ャスト先ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã«
- ClassCastException ã®å›žé¿:
- アップã‚ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã™ã‚‹ã¨ã¯é™ã‚‰ãªã„ãŸã‚ã€ãƒ€ã‚¦ãƒ³ã‚ャスト時ã«ã¯
instanceofを使用ã—ã¦ç¢ºèªã—ã€é©åˆ‡ãªã‚ャストãŒã§ãã‚‹ã‹ã‚’確èªã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - ダウンã‚ャストを試ã¿ãŸçµæžœãŒ
trueã®å ´åˆã«ã®ã¿ãƒ€ã‚¦ãƒ³ã‚ャストを行ã„ã€ãã†ã§ãªã„å ´åˆã¯ClassCastExceptionを回é¿ã™ã‚‹ãŸã‚ã«ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ãŒå¿…è¦ã§ã™ã€‚
- アップã‚ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã™ã‚‹ã¨ã¯é™ã‚‰ãªã„ãŸã‚ã€ãƒ€ã‚¦ãƒ³ã‚ャスト時ã«ã¯
è§£ç”例ã§ã¯instanceof 演算åを使用ã—㦠animal オブジェクト㌠Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã‚’確èªã—ã€ãã®å¾Œã§ãƒ€ã‚¦ãƒ³ã‚ャストを行ã£ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ€ã‚¦ãƒ³ã‚ャスト時ã«ç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹ ClassCastException を回é¿ã§ãã¾ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント