<aside> 1️⃣ 객체
물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것
속성과 동작으로 구성
속성 : 이름, 나이 등 → 필드
동작 : 웃다, 먹다 등 → 메소드
</aside>
<aside> 2️⃣ 클래스
객체를 생성하기 위한 필드와 메소드가 정의되어 있는 부분
<aside> 3️⃣ 인스턴스와 필드/메소드, 생성자
인스턴스 : 클래스로부터 만들어진 객체
필드 : 객체의 데이터를 저장하는 곳
→ 변수와 비슷하나 다름!! 착각 NO
메소드 : 객체의 동작에 해당
→ 이 중 Getter/Setter는 필드의 직접적 접근을 제한하여 객체의 무결성을 보장
생성자 : new 연산자로 호출, 객체의 초기화를 담당
→ 초기화를 담당하므로 반드시 존재함 !!!
</aside>
<aside> 4️⃣ 오버로딩
: 다양한 값을 동일한 기능으로 처리하기 위한 것
생성자 오버로딩
: 매개변수를 달리하는 생성자를 여러개 선언하는 것
메소드 오버로딩
: 클래스 내에 같은 이름의 메소드를 여러개 선언하는 것
↔ 후에 나올 오버라이딩과 다름!
: 오버라이딩은 상속 받은 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 재정의하는 것
</aside>
<aside> 4️⃣ 접근 제한자
접근제한자 | 범위 |
---|---|
public | 외부 클래스 |
protected | 같은 패키지, 자식 클래스 |
private | 클래스 내부 |
default | 같은 패키지에 소속된 클래스 |
</aside> |
: 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법
추상화
객체들이 공통적으로 필요로 하는 속성이나 동작을 하나로 추출해 내는 작업 → 데이터 추상화
예를 들어 사냥 게임과 달리기 게임을 구현한다고 하면 둘 다 사람이 이동하는 기능이 필요함 ! → 사람이 이동하는 기능을 구현한 객체를 한번만 구현하면 두 게임에 모두 사용할 수 있음!
불필요한 정보를 숨기고 필요한 것만 드러내는 것 → 제어 추상화
: 사용자가 기기를 사용한다면 기기의 동작에만 신경쓰고 어떤 원리로 어떻게 동작하는 지는 자세하게 알 필요가 없음
캡슐화 : 데이터와 메서드를 하나의 단위로 묶어, 외부에서 접근하지 못하도록 보호하는 개념
상속 : 부모 클래스의 특징을 자식 클래스가 물려받는 것
다형성 : 같은 자료형에 여러 가지 타입의 데이터를 대입하여 다양한 결과를 얻어낼 수 있는 성질
예시) 오버로딩과 오버라이딩