[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
추상 클래스 abstract class
- 추상 클래스는 하나 이상의 추상 메소드 abstract method 를 갖는 클래스
- 상속 관계에서 부모 클래스의 역할을 갖기 위한 클래스이며 추상 메소드와 일반 메소드를 가질 수 있음.
- 추상 메소드는 메소드의 몸체가 없는 메소드이며 자식 클래스에서 재정의하도록 (강제) 하기 위한 메소드
- 추상 클래스는 new 동적 할당자를 통해 인스턴스 객체를 만들 수 없음.
인터페이스 Interface
- 인터페이스는 일반적으로 추상 메소드만 가지며 interface 키워드를 이용해 정의
- 특정 클래스가 인터페이스를 구현하기 위해서는 implements 키워드를 통해 구현
- 상속과 달리 (단일 상속만 가능) 인터페이스는 하나의 클래스가 둘 이상의 인터페이스를 동시에 구현 가능
- 인터페이스를 통해 설계와 구현을 완전히 분리 가능
- 인터페이스에는 필드, 추상메소드, static 메소드, default 메소드를 정의할 수 있음.
- 인터페이스에 정의하는 모든 필드는 public static final (사용자 정의 상수)이 자동으로 적용
- Java 8부터 인터페이스에 static 메소드를 추가할 수 있으며 static 메소드의 상용은 일반 클래스와 동일
- Java 8부터 default 메소드가 추가되었으며 이 메소드는 그 자체로 완전한 메소드이며 구현 클래스는 선택적으로 재정의 가능
인터페이스의 활용 - 다형성
- 자바의 상속 구조는 단일 상속의 원칙을 갖기 때문에 하나의 클래스가 여러 부모 클래스를 상속할 수 없음.
- 서로 다른 부모 클래스를 갖는 클래스 간에도 같은 인터페이스를 구현 가능
- 같은 인터페이스를 구현하고 있는 클래스 간에는 그 인터페이스로 하여금 대표성을 갖게 할 수 있음.
- 인터페이스와 구현체와도 up-casting/down-casting 가능
- 서로 다른 내용의 클래스라도 같은 인터페이스를 구현하고 있다면 해당 인터페이스를 가지고 대표성을 갖게해서 다형성을 구현하게 할수 있음.
인터페이스의 역할
- 하나의 프로그램의 다수의 클래스들이 서로 관계를 형성하게 되고 각 클래스들은 역할에 따라 구분
- 클래스들 간에 관계를 밀접하게 구성하게 되면 특정 클래스에서 변경이 일어날 경우 많은 클래스들이 영향을 받음.
- 따라서, 클래스 간에 관계를 구성할 때 그 관계를 느슨하게 관리하는 것이 중요
- 클래스와 클래스 사이에 인터페이스를 구성하면 직접적인 접근이 없는 느슨한 관계 구성 가능
2022.09.14 - [SPRING] - [SPRING] Service 와 ServiceImpl
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] String 클래스 (0) | 2022.11.09 |
---|---|
[JAVA][기초] 배열 Array (0) | 2022.11.07 |
[JAVA][기초] Object 클래스와 메소드 (0) | 2022.10.12 |
[JAVA][기초] up-casting / down- casting 과 다형성 polymorphism (0) | 2022.10.11 |
[JAVA][기초] 상속 과 오버라이딩 Overriding (0) | 2022.10.07 |