JAVA

[JAVA] 객체 지향 (1)

애용쓰 2022. 1. 23. 00:08

객체 지향 프로그래밍 

객체 : 사물, 주변에 있는 모든 것

인천당근걸부천영화관에 방문해서 팝콘을 주문하기 위해 필요한 객체는 총 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은 객체 생성 시 호출된다.