객체를 먼저 만들고 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법
객체의 데이터와 동작을 하나로 묶고 실제 구현 내용을 외부에 감추는 것
접근 제한자 이용
부모객체는 자신의 필드와 메소드를 자식 객체에게 물려줄 수 있음
사용방법은 동일하지만 실행결과가 다양하게 나오는 성질
메소드 오버로딩 이용
속성(필드) + 동작(메소드)
1. 물리적으로 존재하는 것
2. 개념적인 것 중에서 식별이 가능 한 것
클래스로부터 만들어진 객체 -> 해당 클래스의 인스턴스
구성 : 필드, 메소드, 생성자
클래스 -> 설계도
클래스는 추상적인 개념 -> 객체는 실체 (예를 들면 동물 vs 개, 고양이)
용도
라이브러리 클래스 : 실행 불가, 다른 클래스에서 이용
실행 클래스 : main() 메소드를 가진 클래스
객체의 데이터를 저장
(고유 데이터, 상태 데이터, 부품 데이터)
c언어의 함수를 자바에서는 메소드라 부름, 동작
호출 방법 : .(도트연산자) 이용 : 객체 접근 연산자
매개변수의 타입, 개수, 순서가 다르게 생성자 선언
new 연산자를 통해 생성자를 호출, 객체의 주소 리턴
매개변수의 타입, 개수, 순서가 다르게 생성자 선언
this
this.필드명 = 매개변수명 : 필드명과 매개변수명이 같을 때 구분용 (없으면 매개변수로 인식)
this() : 자신 생성자 호출
this키워드 : 인스턴스 필드임을 강조
1. 리턴 타입(타입 ... 변수명) {
}
2. 배열을 매개값으로 사용
필드와 메소드는 인스턴스 멤버(객체 소속)와 정적 멤버(클래스 소속)로 나뉨
정적멤버
static
정적 필드는 객체 생성 없이도 사용할 수 있기 때문에 생성자에서 초기화 작업을 하지 않음
생성자는 객체가 셍성된 후 실행되기 때문
단 하나의 객체만을 사용하고 싶을 때 사용
1. private인 정적 필드 선언 (및 생성자 생성&대입)
2. ⭐ private인 생성자 생성 (외부에서 new 연산자로 생성자 호출 불가)
-> 싱글톤 패턴이 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있음
3. 게터 생성 (getinstance)
싱클톤 패턴을 쓰는 이유가 뭘까