자바 문법 종합반 3주차에 배웠던 것들을 이용하여 계산기의 기능을 코드로 구현하는 과제를 해보았다, 어떤 걸 이용하면 될까 하고 생각하다가 3주차에 배웠던 개념은 상속, 추상클래스, 인터페이스 등이 핵심적이라 이런 개념을 이용하여 구현하면 될 것 같았다. 과제에서는 무엇을 이용해야 할지 직관적으로 알기 쉽게 클래스 이름이 Abstract...로 지정되어 있는것을 보니 추상 클래스를 이용하면 될 것 같았다.
근데 추상 클래스와 인터페이스의 차이가 뭔지 고민에 빠졌다. 어차피 추상 클래스도 인터페이스도 추상 메서드가 아닌 다른 메서드를 쓸 수 있고, 둘 다 extends하거나 implements 할 때 메서드를 필수적으로 구현을 해줘야 한다. 내가 강의에서 배웠던 차이는 인터페이스의 멤버변수는 public static final이어야 하고 추상 클래스는 안 그래도 된다는 것..? 정도였다. 실무에서는 어느 쪽을 많이 쓰고 왜 쓰는지 궁금해서 찾아봤다.
자바의 추상 클래스와 인터페이스"강이"의 JAVA 강좌 자바의 추상 클래스와 인터페이스
링크에 다 있는 글들이지만 두 링크에서 내가 필요한 부분을 정리하면 이렇다.
추상 클래스
목적
추상 클래스를 상속 받아서 기능을 이용하고 확장시키는 데 있다.
어떤 상황에 쓰는가
같은 종류나 행동들을 구현할 게 많을 때 쓰고 상속에 대한 계층구조를 명확히 표현할 때 쓴다. 원래 추상 클래스는 일반메서드를 쓸 수 있는 점에서 인터페이스와 달랐으나, 자바 8 이후로 인터페이스에서도 default 키워드로 메서드를 구현할 수 있다. 그리고 추상 클래스는 인터페이스보다 속도가 빠르다. 인터페이스는 관련 메서드들을 찾기 위해 부가적인 일들을 더 처리하기 때문이다.
인터페이스
목적
함수의 껍데기만 있고 그 함수의 구현을 강제하기 위해서 쓴다. 구현을 강제함으로써 구현 객체의 같은 동작을 보장할 수 있다.
어떤 상황에 쓰는가
디자인을 구성하는 요소들이 자주 바뀔 때 쓰면 유용하다. 메서드 형태만 서로 공유해서 구현되는 상황일 때 적합하고 클래스 전체가 아닌 메서드들만 쓰고 싶을 때 인터페이스를 이용하면 효과적이다. 실무에서는 인터페이스의 사용빈도가 높은데 그 이유 중 하나가 동시개발이 가능하므로 시간을 많이 단축시킬 수 있다는 점이다.
내일부터 캠프에서 내준 개인 과제를 해 봐야 하는데 둘 다를 사용할지 어느 하나를 정해서 사용할지 잘 생각해봐야겠다.
'STUDY > JAVA' 카테고리의 다른 글
[TIL] contain 메서드 공부하기 (0) | 2023.06.02 |
---|---|
[TIL] 실무에서 Stream은 어떻게 쓰이고 있을까? (0) | 2023.05.30 |
[TIL] 프로그래머스 - 신규 아이디 추천 (0) | 2023.05.28 |
[TIL] 다형성 코드로 익혀보기 (0) | 2023.05.27 |
[TIL] 프로그래머스 - 완주하지 못한 선수 (0) | 2023.05.26 |