인터페이스와 추상클래스의 공통점!!
-둘 다 <<<<<<추상메서드를 포함>>>>>>하고 있기 때문에 new연산자로 객체를 생성할 수 없음 ㅜㅜ
-그래서 인터페이스를 구현(implements)해야만, 추상클래스를 상속(extends)받아야 만 해당 클래스를 사용할 수 있습니답.
차이점!!!!!
제일 큰 차이점은 <<<사용방식>>>>이 가장 다름!!
추상클래스를 사용하려면 상속키워드(extends)를 사용하는데
인터페이스는 implements라는 구현이라는 키워드를 사용함!!!!!!!!!!!!!!!!!!!
즉, 추상클래스는 상속이라는 말 처럼 어떤 기능을 자식에게, 하위클래스에게 물려주거나
추상클래스가 가지고 있는 기능을 하위클래스가 확장할 필요가 있을 때! 사용함
반면에 인터페이스는 키워드가 상속이 아닌 구현이기 때문에
해당 인터페이스를 구현한 클래스는
인터페이스가 가지고 있는 모든 메서드를 구현해야 하는 강제성이 생김!(구현을 안하면 빨간줄뜸)
즉, 인터페이스는 여러 클래스가 사용방법이 같음을 보장하기 위해 사용하는것~!
예시) 추상클래스는 유전자라고 생각.
예를들어, 부모와 자식이 있을 때
부모가 빨간머리면 자식도 빨간머리!(물려줌)
부모가 키가 작아도 자식은 키가 클 수가 있지(재정의 혹은 기능확장!)
추상클래스는 말 그대로
<<<<<<<<<<<<<<물려주거나 확장할 필요가 있을때~!~!!!~!걍 상속의 의미라고 생각>>>>>>>>>>>>>
예시) 인터페이스는 뭔가 걍 공통점을 추출했다고 생각하셈.
예를들어, TV가 있는데 TV는 키고 켤 수 있고 볼륨도 내리고 줄일수도 있지
근데 TV가 삼성티비도 있고 엘지티비도있고 뭐 소니티비(?)도있고 여러가지 있을텐데
이 TV들을 사용하려면 방식은 똑같잖아
다 TV를 키고 끌 수 있고 볼륨도 줄일 수 있고 내릴수도 있지
공통적인 키고,켜고,볼륨내리고,올리고 하는 행위들을 추출해서 TV라는 인터페이스로 만들어가지고
삼성티비나 엘지티비 소니티비가 해당 TV인터페이스를 구현하믄
개발자가 일일이 삼성티비 클래스에다가 public void on()...웅엥 이러면서 키는기능 켜는기능 볼륨내리고 줄이는기능
하나하나 구현할 필요 X
왜냐 TV를 구현해서 어짜피 강제적으로 메소드구현해야하니까 번거로움이 없음~
위에서 말했듯이 삼성티비 엘지티비 소니티비 사용방식이 같음을 보장하는거임 TV 인터페이스가~!~!~~~~
요약
추상클래스는 걍 물려주기위해 쓴다.
인터페이스는 공통점을 추출해서 편하게쓰는거임
=> 걍 개발자가 여러번 코드치기싫으니까 귀찮아서 만든기능 어차피 자주 쓰이는건 인터페이스다~
'👩🏻💻Technical things > Questions' 카테고리의 다른 글
[ HTTP 프로토콜 정복 ] (0) | 2020.08.24 |
---|---|
자바정리 (0) | 2020.08.24 |
[ JAVA 개념정리 ] Part 4 ( Collection ~ END) (1) | 2020.08.05 |
[ JAVA 개념정리 ] Part 3 (인터페이스~Constructor) (0) | 2020.08.05 |
[ JAVA 개념정리 ] Part 2 (객체지향 프로그래밍) (0) | 2020.08.05 |