새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성
즉, 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻함
클래스 -- 인스턴스화 --> 인스턴스(객체)
객체는 속성과 기능으로 이루어져 있고, 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(member)라 함
속성(property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
기능(function) : 메서드(method), 함수(function), 행위(behavior)
| 변수의 종류 | 선언위치 | 생성시기 |
|---|---|---|
| 클래스변수 (class variable) | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
| 인스턴스변수 (instance variable) | 클래스 영역 | 인스턴스가 생성되었을 때 |
| 지역변수 (local variable) | 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) | 변수 선언문이 수행되었을 때 |
기본형 매개변수 : 변수의 값을 읽기만 가능 (read only)
참조형 매개변수 : 변수의 값을 읽고 변경 가능 (read & write)
클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
클래스 변수(static변수)는 인스턴스를 생성하지 않아도 사용할 수 있다.
클래스 메서드(static메서드)는 인스턴스 변수를 사용할 수 없다.
반면에 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다.
메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
메서드 호출시간이 짧아지므로 성능이 향상된다.