추상 클래스와 인터페이스를 각각 알아봤으니
뭐가 다른지 한번 알아보자
1. 추상 클래스는 기능을 확장하는 것이 주 목적,
인터페이스는 정의한 내용을 구현하는 것이 주 목적
추상 클래스는 추상 메소드 외에도 기존 메소드를 같이 상속시키면서
반드시 구현이 필요한 내용인 추상 메소드를 상속받은 클래스에서 구현시키는 것이 주 목적이고
인터페이스 같은 경우에는
사실 내용도 없고 ~~를 구현해라 하는 껍데기 아닌가
정의한 껍데기들을 implements 받은 곳에서 모두 구현시키고
동일 메소드를 보면 무슨 기능인지 쉽게 알 수 있게 한다
2. 추상 클래스는 하나밖에 상속을 못하나 인터페이스는 여러개 상속이 가능하다
각각 추상 클래스와 인터페이스를 상속받은 경우인데
extends 같은 경우에는 무조건 하나만 상속이 가능하다
, 쓰고 하나 더 상속받으려 하면 상속이 안된다
그러나 인터페이스는 몇개든 implements가 가능하다
3. 추상 클래스는 반드시 구현해야 할 메소드의 앞에 abstract를 써야 하나, 인터페이스는 안 써도 된다
보면 추상 클래스의 경우에는 abstract를 붙이지 않으면
body를 붙여서 concrete method로 만들거나
abstract를 붙이라고 하는데
인터페이스의 경우에는 붙이지 않아도 상관없다
물론 둘 다 body를 구현하면 반드시 구현해야 되는 메소드에서
구현 안해도 되는 메소드로 바뀐다..
4. 인터페이스는 인터페이스고 추상 클래스는 클래스다
추상 클래스와 인터페이스의 차이를
면접에서 자주 물어본다는데
나 같은 SI 경우에는 인터페이스나 추상 클래스나 딱히 쓸 일이 없더라
일단 계속 수정과 변경이 이어지기 때문에
인터페이스나 추상 클래스나 고치면
몇천개의 파일을 다 고쳐야 하는데
그게 말이나 되나..
몇십년 한 사람들한테 물어봐도
딱히 쓰는 경우를 못 봤다
취지는 좋은데
수정을 계속 해야 한다면
좋은 거에서 귀찮은게 되버리는거 아닌가
수정 안하게 완벽하게 짜면 된다고 하지만
그게 더 말이 안된다
'IT > Java' 카테고리의 다른 글
자바 오버라이딩, 오버로딩 사진 하나로 구분하기 (0) | 2019.02.21 |
---|---|
자바 다형성(Polymorphism) 알아보기 (0) | 2019.02.21 |
자바 인터페이스(interface)란 무엇인가? (0) | 2019.02.19 |
자바 추상 클래스, 추상 메서드란 무엇인가 (0) | 2019.02.18 |
자바 String 형을 int 형으로 바꾸기, int를 String 형으로 바꾸기 (0) | 2019.02.14 |
댓글