자바 공부중인데 추상클래스와 인터페이스의 차이를 명확하게 머릿속에서 구체화하고 넘어가고싶습니다.
제가 공부한바로는 추상클래스는 같은 혈통에 해당하는 기능들을 명시해두고 각각의 자식 클래스에서 추상클래스를 상속받아서 오버라이딩 해서 사용하는걸로 알고있고
인터페이스는 추상 클래스보다 좀더 추상화된 개념으로 혈통이 달라도 행동자체의 유사한점 ex) 날다 (비행기도 날고 새도날지만 같은 혈통이아님)
을 명시하는 개념으로 알고있습니다.
차이점으로는 인터페이스의 경우 클래스가 아니여서 다중상속이 가능한점. default 메서드의 사용가능한점. 상수 선언. 등이 가능한것으로 알고있고.
공통점으로는 둘다 구현할 객체에서 추상메서드를 무조건 구현해야한다라는 규칙이 있다는점. 객체화를 할수없다는점. 등등 으로 이해를 하고있습니다.
위쪽에 적어둔 내용을 기반으로 생각해봤을때 인터페이스를 "비행하기" 이라고 정한다면 날다() , 착륙한다() 정도를 인터페이스에 명시해둘수있을거같습니다.
만약 객체는 새,날치, 비행기,전투기 4개라면
추상클래스는 Animal클래스,AirPlane클래스를 만들어서 객체에 상속시켜 사용하는것 이라고 이해하면 될까요..
다형성구현을 위해서 올바르게 사고하는방법에 팁이있을까요...
문법적 차이를 떠나서 추상클래스는 여러 클래스의 공통된 속성을 묶어서 오버라이딩으로 동일한 메소드 형태로 상속하기 위함이고 인터페이스는 명세서 입니다. 이 인터페이스를 상속받으면 이 기능을 구체적으로 구현할게 라고 정의서에 가깝습니다. - dc App
한국 군대를 예로 들면 한국 남성 정보를 공통으로 추려서 추상클래스를 만드는거고 인터페이스는 무기를 장착하는 개념입니다. 각 병사마다 인터페이스를 상속받아서 자기총 사용법을 훈련해야죠 - dc App
@딘퐁 세세하게 알려주셔서 감사합니다 이해해보려고 자꾸 생각이깊어지는거 같습니다
@글쓴 백갤러(121.164) 앱개발 해보면 좀 이해가 가는데 버튼마다 버튼리스너라는 인터페이스를 상속받으서 메소드 실체를 구현함 - dc App
공부를 하는게 아니라 이걸 왜 쓰게 됐는지 이 개념을 실제로 어디서 써먹는지를 우선으로 하셈 - dc App
이론보다 그냥 ide열고 직접 쳐보셈 추상클래스랑 인터페이스를 별개로 두고 생각하지말고 둘다 같이 써야 될 때도 있다
인터페이스는 청사진 같은 개념임 규격을 정하는거. 동작하는 걸 미리 정의해두는거지 추상 클래스는 상태관리하는용도임. 생성자를 이용하거나 인스턴스 변수를 선언할수도있음 그래서 스프링부트 같은거 열어보면 인터페이스로 행동들을 정의하고 그 인터페이스를 implements해서 추상클래스를 정의, 그 것을 상속받는 클래스를 만들어서 개발자가 사용할수있도록 해놓기도함
기능에 연연하면안됨
무슨말인지 알고있습니다 ㅠㅠ
@글쓴 백갤러(121.164) 아니그니깐 추상클래스를 인터페이스처럼 쓸수있다해서 동일시하면 안된다는거임. 이름부터 '추상'클래스 와 '인터페이스'잖아
@밀우 이게맞죠 저도 학생때는 이 두개가 서로 상반되서 하나쓰면 하나 안쓰는 그런건줄 알았는데 둘은 그냥 다른거임
다들 감사합니다 ai 한테 상황 예시던져달라하고 코드구현하면서 인터페이스 정복 해야겠네용
인터페이스는 시그니처(스펙 정의) 즉 계약만 정의해둔거고 추상 클래스는 거기에 공통으로 사용하거나 공유할 상태나 메서드 같은 구현이 포함된 클래스임