객체(Object) : '모든 실재(實在)하는 어떤 대상, 사물 뿐만아니라 사람과 동물, 심지어 눈에 보이지 않는 어떤 논리나 개념 같은 것들도 객체다.
객체지향 프로그래밍(OOP, Object Oriented Programming) : 프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 특정 기능을 구성"하는 프로그래밍 방법론
실제 사물의 속성(state)과 기능(behavior)을 분석한 후에 이것을 프로그래밍의 변수와 함수로 정의함으로 실제 세계를 최대한 컴퓨터 프로그래밍에 반영
각 객체는 하나의 완전하고 독립적인 기능을 가지기 때문에, 그 자체로 유용하고 손쉽게 재활용
할 수 있습니다, 기존 코드를 활용해서 새로운 코드를 상대적으로 손쉽게 작성할 수 있고, 코드 간의 관계 설정을 통해 적은 노력으로도 쉽게 코드를 변경할 수 있게 합니다.
프로그래밍 설계의 측면에서 보면 프로그램 개발 및 유지 보수에 드는 비용과 시간을 획기적으로 줄일 수 있고, 객체를 통해 데이터를 관리하여 데이터를 손실 없이 관리하기에 용이합니다.
class 클래스명 { // 클래스 정의
-- 생략 --
}
클래스명 참조_변수명; // 인스턴스를 참조하기 위한 참조변수 선언
참조_변수명 = new 생성자(); // 인스턴스를 힙메모리에 생성 후, 객체의 주소를 참조 변수에 저장
new
키워드는 생성된 객체를 힙 메모리에 넣으라는 의미.
(포인트 연산자) : 해당 위치에 있는 객체 안을 보세요 참조 변수명.필드명 // 필드값 불러오기
참조 변수명.메서드명() // 메서드 호출
클래스 변수(cv, class variable)
static
키워드를 사용하여 클래스 변수를 선언클래스명.클래스변수명
을 통해 사용이 가능인스턴스 변수(iv, instance variable)
new 생성자()
를 통해 인스턴스가 생성될 때 만들어집니다.지역 변수(lv, local variable) -스택메모리에 저장
- 메서드 내에 선언되며 메서드 내({} 블록
)에서만 사용가능한 변수
- 지역변수는 스택 메모리에 저장
- 직접 초기화하지 않으면 값을 출력할 때에 오류가 발생하는 지역변수와는 다르게 필드 변수는 직접적으로 초기화를 실행하지 않더라도 강제로 초기화
- 힙 메모리에는 빈공간이 저장될수 없어 강제 초기화, 스택 메모리는 강제로 초기화되지 않아, 지역변수는 반드시 초기화 해주어야 한다.
class Example { // => 클래스 영역
int instanceVariable; // 인스턴스 변수
static int classVariable; // 클래스 변수(static 변수, 공유변수)
void method() { // => 메서드 영역
int localVariable = 0; // 지역 변수. {}블록 안에서만 유효
}
}
static
키워드가 붙어있는 멤버 public static void main(String[] args) {
StaticField staticField1 = new StaticField(); // 객체 생성
StaticField staticField2 = new StaticField();
staticField1.num1 = 100;
staticField2.num1 = 1000;
자바제어자 반환타입 메서드명(매개 변수) { // 메서드 시그니처
메서드 내용 // 메서드 바디
}
void
가 아닌 경우에는 메서드 바디({}
)안에 반드시 return
문이 존재해야 합니다..
)를 통해 메서드를 호출