객체 지향 프로그래밍
객체 : 사물, 주변에 있는 모든 것
인천의 당근걸이 부천의 영화관에 방문해서 팝콘을 주문하기 위해 필요한 객체는 총 5개이다.
객체 지향 프로그래밍의 장점
- 신뢰성 높은 프로그래밍 가능
- 코드 재사용
- 유지보수 유리
속성과 기능을 추상화하여 클래스 정의 -> new 키워드를 통해 구체화
→ 자바세계에서 활동 가능한 객체 (object, instance) 생성
˙ 객체는 heap 메모리에 생성 (new를 사용해 생성한 것은 모두 heap 영역에 생성)
클래스 : 객체를 정의한다. 클래스 사용을 위해 객체를 생성해야 한다.
객체 : 클래스를 구체화, 실제로 사용 가능하다. 클래스를 데이터타입으로 해서 메모리에 생성한다.
JVM 메모리 구조
- Class 영역 : 프로그램이 run()에 의해 실행될 때 정보가 올라가게 된다
- Stack 영역 : 메서드 호출 순서대로 쌓이는 구조
- Heap 영역 : 객체를 저장하는 영역. 생성된 객체는 Garbage Collection이 사용하지 않는 객체를 자동 탐지해서 삭제
· method(메서드) : 객체의 동작 묘사 (기능). 작업 수행을 위한 코드의 집합
- 코드의 중복을 방지하고 유지 보수에 유리
- 선언부와 구현부
- 외부의 값을 argument로 전달받아 구현부의 코드를 실행하고 return 키워드를 통해 결과값을 돌려준다.
· 기본형 변수와 참조형 변수
· 메서드 호출시 argument로 입력된 값을 복사해서 전달
- 값 복사 전달 Call by Value
- 주소 복사 전달 Call by Reference
· Method Overloading ( 메서드 오버로딩) @오버라이드랑 완전히 다른것, 별개로 생각@
: 메서드 이름이 동일한 것을 허용한다.
- 조건 1) argument 개수 다른 경우
2) argument 데이터 타입 다른 경우
3) argument 개수, 데이어 타입 다른 경우
· 생성자 : 객체 생성 시 new 키워드와 함께 호출, return 타입이 없다.
ex) Person person1 = new Person();
클래스에 생성자가 하나도 없다면 컴파일러가 기본생성자(argument가 없는 생성자)를 생성한다.
생성자가 하나 이상 존재하면, 기본 생성자를 만들지 않는다.
이 경우
1) 기존에 만든 생성자를 지우거나
2) 기본 생성자를 만들어주면 오류가 해결된다. <- 보통 이 방법 사용
· Static block은 제일 먼저, 프로그램 최초 실행 시 호출된다. (딱 한번)
· instance(object, 객체) initialize block은 객체 생성 시 호출된다.
'JAVA' 카테고리의 다른 글
[JAVA] HashMap 기본 및 정렬 (0) | 2023.01.19 |
---|---|
[Java] BigInteger(큰 정수) (0) | 2023.01.18 |
[JAVA] 객체지향(3) (0) | 2022.01.30 |
[JAVA] 객체지향 (2) (0) | 2022.01.24 |
[JAVA] 배열 (0) | 2022.01.18 |