[Java] 추상메소드 , 인터페이스
추상클래스 vs 인터페이스
클래스: 우리가 사용할 객체에 대한 구현을 해 놓은 틀(객체를 찍어낸다) ex)붕어빵 틀, 공장의 생산라인
메소드 1. 구현메소드 : 구현 부{}가 있는 메소드
2. 추상메소드 : 구현부{}가 없는 메소드
클래스 1.구현클래스 (Concrete class): 모든 메소드가 구현된 클래스
2.추상클래스(Abstract class) : 추상 메소드가 존재하는 클래스,
추상 메소드가 없는(모든 메소드가 구현된) 클래스 ==== 부모가 메소드 구현{}을 하지 않아서 자식이 구현(재정의) 하는 것이다. 부모 부분에서 추상클래스로 선언부만 해주고 구현부는 반드시 자식들이 하게한다. 추상클래스는 new를 하지 못하게 막아놨다. 생성을 하면 알멩이가 없어서 오류가 나기때문
좌변(큰거) = 우변(작은거) // 큰것에 작은 것을 넣은 것임
객체들의 크기는 상속트리를 기반으로 크고 작음을 판단한다.
인터페이스 : 클래스가 아님 클래스들이 지켜야하는 약속과 같은 것, 구현과 사용을 분리! 특정 구현에 의존하지 않는 설계에 사용, 무엇을 사용하는지 타입자체를 지정할 수 있다.
사용자 측면: “What”의 개념이다.=> 무엇을 할 수 있는지, 클래스들이 갖고 있어야 하는, 지켜야하는 약속, 스펙
구현자 측면: 약속대로 동작하도록 구현하는 책임 (무엇이 동작하도록 구현)
인터페이스가 같다 = 사용방법이 같다
사용하는 메소드는(사용방법) 약속되어 같은데 각각에 들어가는 기능들의 구현은 다르다.
인터페이스는 추상메소드 + 상수(바꾸지 못하도록,static 상수)만 가질 수 있다.
l 모든 메소드가 추상메소드라면 인터페이스로하여 다중상속을 받을 수 있어서 추상클래스보다 더 좋음