OOP
Object-Oriented Programming, 조립식 프로그래밍.
클래스(Class)는 자바 프로그래밍의 최소 단위이며, 객체(Object)를 만들기 위한 설계도라고 할 수 있다. 또한 오브젝트를 인스턴스라고 부르기도 해서, 클래스를 통해 객체를 만들어내는 과정을 인스턴스화라고 한다.
- 클래스 : 설계도
- 오브젝트 : 부품
- 프로그램 : 자전거
// Pizza 클래스 - 프로그램의 최소 단위
public class Pizza {
// 메인 메소드 - 프로그램 실행의 시작점
public static void main(String[] args) {
// 실행될 코드들..
}
}
메인 메소드 : 클래스 내부에 위치하며, 프로그램 실행의 시작점.
클래스는 필드(field)와 메소드(method)로 이루어져 있다. 따라서 클래스를 만드는 방법은 아래와 같다.
- field :객체가 가지게 될 상태
- method: 객체가 할 동작
예를 들어 강아지 클래스를 만든다면 field 는 이름, 품종, 몸무게 등. 그리고 method는 짖기, 꼬리 흔들기 등이 있을 수 있다.
class Dog{
//field
String name;
String breed;
double weight;
//method
public static String bark(){
System.out.println("멍멍!!");
}
}
public static 반환타입 메소드이름 (입력 변수){
변수 생성
값 계산
값 반환
}
클래스로부터 객체를 생성하는 특별한 메소드로, 객체 생성 및 초기화 역할을 담당한다. 생성자도 메소드이므로 호출과 정의로 나누어진다.
클래스 타입, 사용자 정의형 타입이라고도 불림. 객체를 변수에 연결하기 위한 타입으로, 객체를 간접적으로 가르키는 형태. 대문자로 시작한다. (ex. String hero, ...)
- Dog jindo = new Dog("시고르자브종", 3);
반면, 레퍼런스형과 달리 기본형 변수는 객체가 아닌 값을 직접 가진다. 그리고 소문자로 시작한다. (ex. int, double, boolean, ...)
- int age = 3;
공유의 개념을 가진 키워드로, 필드와 메소드에 적용될 수있다. 필드에 적용되면 클래스 변수, 메소드에 적용되면 클래스 메소드라고 부른다. 클래스 변수는 객체 외부 클래스 영역에서 공유된다.
반면 None static field, 다시말해 static 이 없는 인스턴스 변수는 객체 내부에 존재한다.
class Student {
//클래스(공유) 변수
static int count = 0;
//인스턴스(멤버) 변수
int id;
String name;
}
또한, 클래스 메소드(스태틱 메소드)는 클래스가 동작시키는 메소드이며 인스턴스 메소드는 간편한 기능 (ex. Math.random)을 구현할 때 사용하기에 유용하다.