◎ 객체 지향 프로그래밍
▶ 객체란?
객체 : 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것
소프트웨어 객체의 필드와 메소드로 정의하는 과정
▶ 객체 지향 프로그래밍의 특징
캡슐화
- 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
- 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
- 접근 제한자는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다.
상속
- 부모가 가지고 있는 재산을 자식에게 물려주는 것
- 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다.
- 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를
만들기 때문에 반복된 코드의 중복을 줄여준다.
다형성
- 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
- 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
※ 오버로딩와 오버라이딩
오버로딩 : 같은 클래스 내에서 같은 이름의 매소드를 사용하는 것(매개 변수 타입, 개수가 다름)
오버라이딩 : 상속을 받은 하위객체가 상위객체의 메소드를 새롭게 정의하고 그대로 덮어쓰고 사용하는 것(매개 변수 타입, 개수 일치)
◎ 객체와 클래스
클래스 : 자바에서는 설계도
인스턴스화 : 클래스로부터 객체를 만드는 과정
◎ 클래스 선언
번호 |
작성규칙 |
예 |
1 |
하나 이상의 문자로 이루어져야 한다. |
Car, SportsCar |
2 |
첫번째 글자는 숫자가 올 수 없다. |
Car, 3Car |
3 |
'$', '_' 외의 특수 문자는 사용할 수 없다. |
$Car, _Car, @Car(x), #Car(x) |
4 |
자바 키워드는 사용할 수 없다. |
int(x), for(x) |
▶ 클래스의 구성 멤버
필드
- 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳
- 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다.
- 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
생성자
- 객체 생성 시 초기화를 담당한다.
- 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 한다.
- 클래스 이름으로 되어 있고 리턴 타입이 없다.
메소드
- 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.
- 메소드는 객체 간의 데이터 전달의 수단으로 사용된다.
▶ 인스턴스 멤버와 this
인스턴스 멤버 : 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말함
인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체없이는 사용할 수 없다.
▶ 정적멤버와 static
정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
클래스멤버라고도 한다.
▶ 정적 메소드와 블록 선언 시 주의할 점
- 객체가 없어도 실행된다는 특징 때문에, 이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다.
- 객체 자신의 참조인 this 키워드도 사용이 불가능하다.