본문 바로가기
java_study

인터페이스를 레퍼런스 변수로 사용할 수 있을까?

by 질서정연_ 2020. 12. 4.

ktko.tistory.com/entry/Effective-Java-52-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EC%B0%B8%EC%A1%B0%ED%95%A0-%EB%95%8C%EB%8A%94-%EA%B7%B8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%9D%BC

 

Effective Java #52 객체를 참조할 때는 그 인터페이스를 사용하라

적당한 인터페이스 자료형이 있다면 인자나 반환값, 변수 그리고 필드의 자료형은 클래스 대신 인터페이스로 선언하자. 객체의 실제 클래스를 참조할 필요가 있는 순간은 생성자를 생성할 때다

ktko.tistory.com

 

과제를 복습하다가 교수님이 주신 코드에서 

DAO<PasswordInfo, String> passwordDao =  new PasswordImpl();

이런 부분이 나왔다. DAO<PasswordInfo, String> 는 인터페이스인데 인터페이스로도 레퍼런스 변수를 생성해 줄 수 있는건가? 왜 굳이 인터페이스로 만들어줘야하는 거지? 라는 의문이 생겼다. 

 

위의 블로그를 참조 했고 인터페이스로 레퍼런스 변수를 만들어주는 이유는 프로그램을 유연하게 만들어주기 위함이다. 

DAO<PasswordInfo, String> passwordDao = new PasswordImpl();에서 

레퍼런스 변수 passwordDao 가 PasswordImpl을 가르킬 수 있는 이유는 PasswordImpl이 DAO를 implement 한 DAOImpl 추상클래스를 상속받고 있기 때문이다. 

댓글