◈ 추상화 (abstract) ◈
구체적인 사실들을 일반화시켜 기술하는 개념으로써 필요한 공통점을 추출하고 불필요한 공통점을 제거하는 과정
1. 복잡한 시스템을 단순화하고 모델링이 가능
• 추상 클래스 (1)
- 추상 클래스(abstract class)
미완성된 클래스로써, 구현부 {} 가 없는(미완성인) 메소드를 가지고 있음
- 추상 클래스와 메소드 예시
• 추상 클래스 (2)
- 추상 클래스(abstract class)
미완성된 클래스
- 추상 메소드(abstract method)
구현부 {} 가 없는(미완성인) 메소드
- 추상 클래스와 메소드 예시
• 추상 클래스 (3)
- 추상 클래스를 사용하는 이유
똑같은 부모 클래스(추상 클래스)를 상속 받지만, 자식 클래스들의 메소드가
모두 다른 기능을 수행할 것으로 예상되는 경우
- 다음 추상 클래스(4) 예시
1. 생물(Organism) 이라는 추상 클래스를 만들고 식물(Plant)과 동물(Animal) 클래스에서 상속 받으려고 함.
2. 먹고(eat), 숨쉬는(breathe)것은 식물과 동물 모두 똑같으나 서로 다름
-> 동물은 먹이를 먹고, 호흡 기관을 통해 호흡함
-> 식물은 광합성을 통해 영양분을 보충하고, 교환 기능을 통해 호흡함
• 추상 클래스 (4)
- 특징 - 1
추상 클래스는 객체 생성 불가
-> 상속을 통해 추상 메소드의 구현부를 완성해야 객체 생성 가능
- 추상 클래스와 메소드 예시
• 추상 클래스 (5)
- 특징 - 2
추상 클래스 안에는 추상 메소드뿐만 아니라 멤버 변수와 구현이 된 메소드들도 사용이 가능함
- 추상 클래스와 메소드 예시
• 추상 클래스 (6)
- 설명
아래와 같이 추상화 클래스를 상속 받고, 메소드의 구현부 {} 까지 다 만들어주면 객체 생성 및 사용 가능
• 추상 클래스 (7)
- 특징 - 3
추상 클래스를 상속 받을 경우 추상 메소드들을 모두 구현해줘야 사용 가능 아래의 케이스는 eat 메소드의 구현부를 만들어 줬지만, breathe 메소드는 여전히 추상 메소드이기 때문에 에러 발생
◈ 추상화(인터페이스) ◈
• 인터페이스(inferface)
인터페이스는 추상 메소드의 묶음이며, 추상 메소드가 아닌 일반 메소드는 가질 수 없음 또한 멤버 변수또한 클래스 변수(상수)만을 가지고 모든 클래스 변수와 추상 메소드의 접근제어자는 public을 가져야 함
-> 외부에서 접근하여 사용할 수 밖에 없기 때문에
- 특징 - 1
아래와 같이 선언부 부분을 모두 생략해도 사용은 가능함
-> 가능한 이유 : 어차피 인터페이스는 반드시 상수 또는 추상 메소드를 사용하기 때문에
- 특징 - 2
1. 다중 상속 가능
2. 인터페이스의 부모 클래스는 인터페이스만 가능
-> 인터페이스는 예외적으로 Object가 부모 클래스를 갖지 않음
3. 여러 개의 추상 메소드 중에서 일부만 구현 가능
-> 클래스 앞에 abstract 붙여줘야 함
-> 추상 클래스가 되므로 객체 생성 불가
◈ 추상화 클래스 vs 인터페이스 ◈
• 추상화 클래스 vs 인터페이스의 차이
1. 추상화 클래스
-> 생성자를 가질 수 있음
-> 클래스 변수, 인스턴스 변수 모두 사용 가능
2. 인터페이스
-> 클래스 변수만 사용 가능
-> 추상 메소드만 가지고 있는 형태
◈ 인터페이스 ◈
• 인터페이스를 사용하는 이유
1. 인터페이스를 상속받은 클래스가 반드시 해당 동작을 구현하도록 강제함
-> 표준화가 가능
2. 유연한 설계가 가능하며 개발 시간을 단축할 수 있음
-> 인터페이스를 참조하여 동작을 사용할 수 있으므로 클래스간의 의존성이 줄고 코드의 재사용성이 높아짐
3. 클래스들의 관계를 맺어줌
오늘은 추상화 관련하여 정리를 했다! 다음에 또 복습을 진행해야겠다 오늘 20000
'Back-End > Java 기초정리' 카테고리의 다른 글
Java ■ 제네릭과 컬렉션 (0) | 2024.04.27 |
---|---|
Java ■ 예외 (0) | 2024.04.26 |
Java ■ 다형성(Polymorphism) (0) | 2024.04.24 |
Java ■ 접근제어자와 캡슐화, 예약어 (0) | 2024.04.23 |
Java ■ 상속 (2) | 2024.04.21 |