여씨의 개발이야기
추상클래스와 인터페이스 본문
1. 추상클래스 : 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스. 클래스의 용도가 객체 생성 용도로 사용하지 않는 경우에 사용함.
(클래스가 객체 생성의 용도가 아니라면 변수의 타입으로 선언하는 용도와 상속의 본연의 기능으로 특정한 코드를 하위 클래스로 물려주는 기능을 활용할 때 사용함.)
- 객체를 생성하지는 않으나 변수 선언 용도로 사용됨.
- 상속의 고유 기능인 하위 클래스에 같은 데이터와 기능을 가지도록 물려주는 기능
- 추상 : 객체의 공통적인 성질만을 뽑아 일반화하여 담아놓은 것
- 추상메서드 : 설계만 해놓고 실제 수행될 내용은 작성하지 않았기 때문에 미완성 메서드
2. 인터페이스 : 일종의 추상클래스로 추상클래스처럼 추상메서드를 갖지만 추상화정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가짐
- 클래스에 필요한 메소드들에 대한 약속, '어떤 기능이 있어야한다.' 라고만 정하고 그 메소드가 어떻게 돌아가는지는 상관 없음. 그저 스펙을 정의.
3. 추상클래스 vs 인터페이스
- 공통점
1) 추상 메소드를 가진다.
2) 객체 생성이 불가능하고 타입으로만 사용됨.
- 차이점
1) 인터페이스는 스펙이나 원하는 기능을 정의하고자 쓰지만, 추상 클래스는 ‘상속+약간의 강제성이 목적’이다.
2) 인터페이스는 상수, 추상 메소드만 존재하지만, 추상클래스는 상속이 원래 목적이므로 실제 변수나 메소드를 그대로 가지고 있다.
3) 인터페이스는 부채만 남겨주지만, 추상 클래스는 재산도 남겨준다.
4) 인터페이스는 다중 상속(?)도 가능하지만, 추상 클래스는 단일 상속만 가능.
'📕 Note' 카테고리의 다른 글
[오블챌] 24.11.07 오늘의 개발일지 (4) | 2024.11.07 |
---|---|
[LINUX] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (1) | 2024.01.16 |
쿠키와 세션의 차이점 (0) | 2024.01.16 |
java언어와 c언어의 차이점 (0) | 2024.01.16 |
오버로딩과 오버라이딩 비교 (0) | 2024.01.16 |