절차지향언어
- 함수기반
- 데이터를 먼저 기술하고 이를 조작하는 함수 만듦
객체지향언어
- 클래스, 객체 기반
- 데이터와 함수를 하나로 묶어줌
객체지향언어 특징
- 추상화: 공통된 속성 추출
- 캡슐화: 연관된 데이터와 알고리즘 묶음
- 정보은닉: 인터페이스만 드러내고 내부구현 숨김
- 상속성: 특정 객체 성격을 다른 객체로 상속
- 다형성: 한 형태로 보이나 다른 역할 가능
객체
객체 구성요소
클래스
- 객체들의 공통적 특징에 대한 서술, 껍데기일 뿐
클래스 정의
- 멤버필드 : 변수, 상수
선언과 동시에 값 초기화 가능, 초기값 지정하지 않으면 0으로
- 메서드
클래스 vs 객체
- 클래스는 객체를 만들기위한 틀이며 객체의 속성과 행위를 추상적으로 정의함
- 객체는 해당 클래스의 구체적인 실례로, 같은 클래스의 객체는 속성에 고유한 값을 지닐 수 있고 동일한 행동을 할 수 있다.

멤버필드
{접근제한} {static} <자료형> <식별자>;
- 접근제한 : 각 멤버마다 따로 기술, public 등
- instance 멤버 필드: 디폴트값, 별도의 메모리 할당, 고유의 속성값 저장
- static 멤버 필드: 모든 객체가 공유, 프로그램 시작시 메모리 할당, 종료될때까지 유지
메서드
- 객체가 수행할 수 있는 동작 정의
- 멤버필드를 이용한 연산
- 억세스 메서드 : getter / setter
- 클래스 정의 안에 메서드의 구현부를 모두 기술
{접근제한} {static} <반환형> <메서드명> ({매개변수1},...,{매개변수n}){
문장1;
문장2;
}
- 접근제한: public은 가장 허용적
- static: 객체 생성 없이도 호출 가능 ex) main
- 반환처리: return / 없는경우 반환형에 void
- 인수들은 순서대로 각각의 매개변수로 받음
- 메서드를 포함하는 클래스의 멤버들도 참조 가능
메서드의 호출
[변수=] 객체명. 메소드명(인수1,...,인수n);
public class Circle {
double radius;
double getCircumference(){
return 2*3.14*radius;
}
double getArea(){
return 3;14*radius;
}
동적 메모리 할당
-
new 연산자 사용
- 필요 크기를 자동으로 계산
- 동적할당된 영역의 참조값을 결과값으로 가짐
-
참조 자료형 변수에 실제 값에 대한 저장공간을 할당받기 위해 필요
-
가비지 컬렉션 : 더 이상 참조되지 않는 동적 할당 메모리는 가비지 컬렉터에 의해 자동으로 회수
객체의 생성과 멤버 접근