1.공통점
-둘다 new 연산자를 통해서 객체를 만들수 없다!
-둘다 추상 메소드를 가지고 있다!
2.차이점
-interface는 상수와 추상메소드 존재(자바8이후로 디폴드,정적 메소드 생김..)
즉 일반변수와 메소드를 싹다 빼버렸다.
또한 여러개의 인터페이스를 구현 가능하며 거기에 상속까지 가능하다.(다중상속)
-추상클래스는 일반변수, 일반메소드,추상메소드가 존재한다.
당연히 단 하나의 부모만 상속 가능하다!(단일상속)
추상 클래스는 왜 쓰는걸까?
그냥 부모 클래스 만들어서 똑같이 상속받아서 사용하면 되는건데
결론 은 부모객체를 만들지 않고 사용하기 위해서 만들었다.
왜 굳이 부모 클래스 안에 자식 객체를 만들고 오버라이드를 하는걸까
그런거 다 필요없이 그냥 자식객체를 생성해서 사용하려고!
예를들어서 라면이라는 부모 클래스가 있고 신라면, 너구리, 안성탕면이 있다면
왜 굳이 라면이라는 객체를 만들어서 사용하는가?! 그냥 신라면 객체, 너구리 객체, 안성탕면 객체를 만들면 되는건데...
이러한 단점을 극복하기 위해서 추상 클래스가 출현 하게 되었다!!!!
-------------------------------------------------------------------------------------------
그러면 인터페이스는 왜 쓰는가?
2가지 용도로 사용된다
1.가르키는 용도(포인터)
2.다중상속을 컨드롤하기 위해서 사용
다중상속을 사용하기 위해서 사용하는 개념인데 그렇게 되면 부모가 여러명이 되어서 구현체에서 메소드를 호출했을때 어디서 가져와야할지 혼란이 온다
즉, 우선순위가 꼬이기 때문에 큰일이 난다. 그래서 일반변수와 메소드를 싹다 빼버린 것이다.
예를 들어보겠다
인터페이스 : 동물
추상메소드 : 먹다 , 걷다, 사냥하다
구현체 : 호랑이, 토끼, 거북이
즉 각각의 구현체는 인터페이스 라는 틀안에서 3가지의 추상메소드를 가지고 각자 다르게 먹고 걷고 사냥한다.
인터페이스는 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할이다. 구현 객체가 같은 동작을 한다는 것을 보장하기 위한 목적이다.
즉 강력한 다형성의 힘을 가질수 있다는 것이다.
'Java' 카테고리의 다른 글
달력 검색 (0) | 2019.12.14 |
---|---|
Stream (0) | 2019.12.14 |
Wrapper Class - AutoBoxing (0) | 2019.12.13 |
Anonymous class (0) | 2019.12.13 |
컬렉션 프레임워크 (0) | 2019.12.13 |