// Animal クラスã®å®šç¾©
class Animal {
// sound メソッド
public void sound() {
System.out.println("Animal makes a sound");
}
}
// Dog クラスã®å®šç¾©ï¼ˆAnimal クラスを継承)
class Dog extends Animal {
// sound メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public void sound() {
System.out.println("Dog barks");
}
}
// Cat クラスã®å®šç¾©ï¼ˆAnimal クラスを継承)
class Cat extends Animal {
// sound メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public void sound() {
System.out.println("Cat meows");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Animal クラス型ã®å‹•çš„ãªé…列を作æˆ
Animal[] animals = new Animal[3];
// ç•°ãªã‚‹å‹•物ã®ã‚ªãƒ–ジェクトをé…åˆ—ã«æ ¼ç´
animals[0] = new Animal();
animals[1] = new Dog();
animals[2] = new Cat();
// é…列をイテレートã—ã¦å„オブジェクトã®ã‚¯ãƒ©ã‚¹ã‚’確èª
for (Animal animal : animals) {
// Animal クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã‚’確èª
if (animal instanceof Animal) {
System.out.println("This is an instance of Animal");
}
// Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã‚’確èª
if (animal instanceof Dog) {
System.out.println("This is an instance of Dog");
}
// Cat クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã‚’確èª
if (animal instanceof Cat) {
System.out.println("This is an instance of Cat");
}
// å„オブジェクト㮠sound メソッドを呼ã³å‡ºã—
animal.sound();
// 区切りã®å‡ºåŠ›
System.out.println("----------------------");
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€å‹•çš„ãªé…列㫠Animalã€Dogã€Cat クラスã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã—ã€instanceof ã‚ーワードを使用ã—ã¦å„オブジェクトãŒã©ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‹ã‚’確èªã—ã¦ã„ã¾ã™ã€‚
å‡ºåŠ›çµæžœï¼š
This is an instance of Animal
Animal makes a sound
----------------------
This is an instance of Animal
This is an instance of Dog
Animal makes a sound
Dog barks
----------------------
This is an instance of Animal
This is an instance of Cat
Animal makes a sound
Cat meows
----------------------
instanceof演算å
instanceof 演算åã¯ã€Javaプãƒã‚°ãƒ©ãƒ ã§ã‚ªãƒ–ジェクトãŒç‰¹å®šã®åž‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’確èªã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れる演算åã§ã™ã€‚ã“れã¯ä¸»ã«ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã®æ–‡è„ˆã§åž‹ã®ãƒã‚§ãƒƒã‚¯ã‚’行ã†ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚
以下㯠instanceof ã®åŸºæœ¬çš„ãªæ§‹æ–‡ã§ã™ï¼š
if (オブジェクト instanceof クラスå) {
// ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¯æŒ‡å®šã•れãŸã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã™
} else {
// ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¯æŒ‡å®šã•れãŸã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã¯ã‚りã¾ã›ã‚“
}
例ãˆã°ã€ä»¥ä¸‹ã®ã‚ˆã†ãªå ´é¢ã§ä½¿ç”¨ã•れã¾ã™ï¼š
Animal animal = new Dog();
if (animal instanceof Dog) {
// animalã¯Dogクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹å ´åˆã®å‡¦ç†
Dog dog = (Dog) animal; // ダウンã‚ャストãŒå®‰å…¨
dog.bark(); // Dog独自ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã›ã‚‹
} else {
// animalã¯Dogクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ãªã„å ´åˆã®å‡¦ç†
}
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€animal オブジェクト㌠Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’確èªã—ã¦ã„ã¾ã™ã€‚確èªå¾Œã€Dog クラスã®ç‹¬è‡ªã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’安全ã«å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚instanceof ã®ä½¿ç”¨ã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒå®Ÿè¡Œæ™‚ã«å®‰å…¨ã‹ã¤æ£ç¢ºã«åž‹ã‚’確èªã§ãã¾ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント