Search

클래스, 상속, 인터페이스

Chapter 7 :  설계도 (클래스)

1. 객체지향 프로그래밍 이해하기

현실 세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만들 수 있는데 이러한 기법을 ‘객체지향 프로그래밍’이라고 부릅니다.
우리는 소프트웨어에서의 부품을 ‘객체’라고 표현하는데 이 객체가 무엇인지 살펴보겠습니다.
객체란?
객체 간의 협력
객체 간의 관계
객체지향 프로그래밍의 특징
객체와 클래스

2. 클래스 설계

클래스는 객체를 생성하기 위한 설계도라고 배웠습니다.
클래스의 구성 멤버에는 필드, 생성자, 메서드가 있습니다.
4 STEP

3. 객체 생성과 참조형 변수

객체 생성
참조형 변수
객체 배열

4. 객체의 속성 : 필드

필드란?
필드의 초기값과 초기화
필드 사용방법

5. 객체의 행위 : 메서드

메서드는 객체의 행위를 뜻하며 객체 간의 협력을 위해 사용됩니다.
메서드의 행위를 정의하는 방법은 블록{ } 내부에 실행할 행위를 정의하면 됩니다.
메서드 선언
메서드 호출 방법
메서드 오버로딩
기본형 & 참조형 매개변수

6. 인스턴스 멤버와 클래스 멤버

멤버 = 필드 + 메서드
인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드
클래스 멤버 = 클래스 필드 + 클래스 메서드
인스턴스 멤버 & 클래스 멤버
필드와 메서드는 선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분할 수 있습니다.
인스턴스 멤버는 객체 생성 후에 사용할 수 있고 클래스 멤버는 객체 생성 없이도 사용할 수 있습니다
인스턴스 멤버
클래스 멤버
지역변수
final 필드와 상수

7. 생성자

생성자는 객체가 생성될 때 호출되며 객체를 초기화하는 역할을 수행합니다.
생성자 선언과 호출
기본 생성자
필드 초기화와 생성자 오버로딩

8. this와 this()

this
this()
예제

9. 접근 제어자

제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해 줍니다.
접근 제어자 : public, protected, default, private
그 외 제어자 : static, final, abstract
❗️ 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용할 수 있습니다.
접근 제어자
Getter 와 Setter
제어자의 조합

10. package와 import 이해하기

패키지란?
import란?

Chapter 8 :  상속

1. 클래스 간의 관계와 상속

상속의 사전적 정의는 부모가 자식에게 물려주는 행위를 말합니다.
객체 지향 프로그램에서도 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있습니다.
상속을 사용하면 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경이 쉬워질 수도 있습니다.
이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지 보수성에 매우 유리해집니다.
상속
클래스 간의 관계
단일 상속과 다중 상속
final 클래스와 final 메서드
Object

2. 오버라이딩

부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 오버라이딩이라고 합니다.
부모 클래스의 메서드를 그대로 사용 가능하지만 자식 클래스의 상황에 맞게 변경을 해야 하는 경우 오버라이딩을 사용합니다.
오버라이딩을 하기 위해서는 아래 조건들을 만족해야 합니다.
1.
선언부가 부모 클래스의 메서드와 일치해야 합니다.
2.
접근 제어자를 부모 클래스의 메서드 보다 좁은 범위로 변경할 수 없습니다.
3.
예외는 부모 클래스의 메서드 보다 많이 선언할 수 없습니다.
오버라이딩 예제로 확인하기
super 와 super()

3. 다형성

참조 변수의 타입 변환
다형성이란?
instanceof

4. 추상 클래스

추상 클래스란?
추상 메서드
추상 클래스 상속
추상 클래스 사용방법

Chapter 9 :  인터페이스

1. 인터페이스의 역할

인터페이스의 역할에 대해 학습해 보겠습니다.
인터페이스는 두 객체를 연결해 주는 다리 역할을 해줍니다.
사람과 삼성티비, 엘지티비 객체가 존재한다고 생각해 보겠습니다.
사람 객체는 멀티 리모컨 인터페이스를 통해서 삼성티비 객체의 채널을 변경할 수 있습니다.
이때 삼성티비가 아니라 엘지티비로 객체가 교체된다고 해도 채널을 변경할 수 있습니다.
상속 관계가 없는 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야 할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있습니다.
인터페이스는 스팩이 정의된 메서드들의 집합입니다.
인터페이스의 구현 클래스들은 반드시 정의된 메서드들을 구현해야 합니다.
따라서 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있습니다.
이러한 특징은 인터페이스에 다형성을 적용할 수 있게 만들어 줍니다.
인터페이스 선언
인터페이스 구성
인터페이스 구현
인터페이스 상속

2. 디폴트 메서드와 static 메서드

디폴트 메서드
static 메서드

3. 다형성

타입 변환
인터페이스의 다형성