[자바] ArrayList의 타입과 상속에 대해

프로그래밍/자바2021. 3. 14. 22:27

자바를 오래동안 쓰고 있지만 제가 잘못 알고 있었던 것이 있네요.

 

class People {}
class Student extends People {}

Student stt = new Student();
People ppl = stt;

자바에선 다형성(Polymorphism)을 지원하기에 위의 코드가 정상적으로 실행됩니다.

 

하지만 ArrayList에서 비슷하게 적용되진 않네요.

ArrayList<Student> list_stt = new ArrayList<>();
ArrayList<People> list_ppl = list_stt;

위의 코드는 에러를 발생 시킵니다. 타입이 일치하지 않으면 에러를 발생 시킵니다.

 

Type mismatch: cannot convert from ArrayList<Student> to ArrayList<People>

 

ArrayList의 속성에서 원하는 동작을 수행하려면 아래와 같이 써야할 것 같네요.

ArrayList<Student> list_stt = new ArrayList<>();
ArrayList<? extends People> list_ppl = list_stt;

 

참고

stackoverflow.com/a/23852671/7225691

 

Using inheritance in Java with array-List

Main Class Game class Player class - parent class PlayerType class - child class I want to set attributes of both player - number of games played,games won,Player name and playertype - stores the ...

stackoverflow.com

stackoverflow.com/a/27015084/7225691

 

Java arraylist and polymorphism

Recently I find some questions about java. 1 【A】 ArrayList dates = new ArrayList(); dates.add(new Date()); dates.add(new String()); 【B】 ArrayList dates = new ArrayList();

stackoverflow.com

 

작성자

Posted by 드리머즈

관련 글

댓글 영역