オブジェクト向け3

1307 ワード

参考資料:『Head First Java』


まず、コードのセットです.
import java.util.ArrayList;// ArrayList ;

class Dog1 {//Dog1 ;
    private String name;// ;
    
    public void bark() {// ;
        System.out.println("bark");
    }
}

public class ObjectTest {// ;
    public static void main(String[] args) {
        ArrayList dList = new ArrayList<>();// Dog1 ArrayList;
        Dog1 d = new Dog1();// Dog1;
        dList.add(d);// ArrayList ;
        Dog1 ad = dList.get(0);// Dog1 Dog1 ;
        ad.bark();
    }
}// bark;

ただし、次の場合は、
import java.util.ArrayList;

class Dog1 {
    private String name;
    
    public void bark() {
        System.out.println("bark");
    }
}

public class ObjectTest {
    public static void main(String[] args) {
        ArrayList dList = new ArrayList<>();
        Dog1 d = new Dog1();
        dList.add(d);
        Dog1 ad = dList.get(0);
        ad.bark();
    }
}// ;
//Type mismatch: cannot convert from Object to Dog1;

JavaではすべてのクラスがObjectというクラスから継承されていることを知っていますが、はっきり言えば「万用クラス」です.ただし、上記のArrayListではDog 1のオブジェクトを保存できますが、get()メソッドを呼び出して取り出したオブジェクトがObjectタイプであるため、コンパイラがDog 1であることを確認できないため、エラーが発生します.
ArrayListから取り出したものは、元のものが何であってもObjectタイプの参照として扱われます.