사진은 프티 트리아농 안의 '왕비의 촌락'
자바 기본문법 세션이 끝나고 드디어 객체지향 프로그래밍으로 넘어왔다. 몇번씩 반복해서 배워도 늘 직접 누군가에게 OOP가 뭔지 말로 정확히 설명할 자신은 없어서 개념 정리를 이번에도 확실하게 짚고 넘어가야될 것 같다.
객체지향 프로그래밍 : 필요한 데이터를 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 협력과 상호작용을 통해 특정 기능을 구성하는 프로그래밍 방법론
OOP로 코드들의 결합도를 낮출 수 있다
➡️ '코드의 결합도를 낮춤' 이란?
코드들의 연관성을 합리적인 수준으로 낮추는 것
=> 코드의 변화와 확장이 유연해진다.
<정리>
- 객체: 무언가에 대한 정보와 동작을 묶어놓은 것
- 클래스: 객체의 설계도, 객체가 어떤 정보를 가져야 하는지, 어떤 동작을 가져야 하는지를 기술한 것
- 필드: 객체가 가져야 하는 정보
- 메서드: 객체가 가져야 할 동작
new
키워드로 객체 생성.
포인트 연산자로 객체 멤버에 접근 Car tesla = new Car("Model Y", "빨강"); // 객체 생성, 초기화
class Car {
public String model; // 필드 선언
public String color;
public Car(String model, String color) { // 인스턴스 초기화
this.model = model;
this.color = color;
}
void accelerate() {
System.out.println("더 빠르게!");
}
void stop(){
System.out.println("멈춰!!");
}
}
클래스 영역
: 클래스 변수(static) 저장스택 메모리 영역
: (객체)참조 변수, 지역 변수 저장힙 메모리 영역
: 객체, 필드 저장
=> static
키워드로 정의되어 있는 멤버들은 인스턴스 생성이나 호출없이 사용 가능
+) 클라우드에 있는거 가져다 쓰는 것 같은 개념
조건
: 메서드 이름은 동일, 매개변수 개수나 타입이 달라야함