JAVA - 객체지향, 변수

석재호·2022년 1월 31일
0

JAVA

목록 보기
4/12
post-thumbnail

객체지향 프로그래밍

  • 객체란?
    주체가 아닌것, 주체가 활용하는 것
  • 객체지향 프로그래밍이란?
    주변의 많은 것들을 객체화 하여 프로그래밍 하는것

객체지향 프로그래밍의 장점

  • 블록 형태의 모듈화된 프로그래밍
    • 신뢰성 높은 프로그래밍이 가능
    • 추가/수정/삭제가 용이하다
    • 재 사용성이 높다

현실 세계 객체, 클래스, 프로그램의 객체의 관계

  • 현실 세계의 객체가 갖는 속성과 기능은 추상화(abstraction) 되어 클래스에 정의된다.
  • 클래스는 구체화 되어 프로그램의 객체(instance, object)가 된다.

프로그램의 클래스와 객체

  • 클래스
    • 객체를 정의해 놓은 것 = 객체의 설계도
    • 클래스는 직접 사용할 수 없고 직접 사용되는 객체를 만들기 위한 틀을 제공
  • 객체
    • 클래스는 데이터 타입으로 메모리에 생성된 것

선언 위치에 따른 변수의 종류

public class VariableTypes{
	int instanceVariable // 인스턴스 멤버 변수
    static int classVariable // 클래스 멤버 변수
    
    public staic void mainI(String[] args){ // 파라미터 변수
 	int localVariable // 로컬 변수
    for(int i=0 ; i<10 ; i++){ // 로컬 변수
    	System.out.println(i);
    }
    }
}

인스턴스 멤버 변수의 특징

  • 선언 위치 : 클래스 {}영역에 선언
  • 변수의 생성 : 객체가 만들어질 때 객체 별로 생성
    • 생성 메모리 영역 : heap
  • 변수의 초기화 : 타입 별로 default 초기화
  • 변수에의 접근 : 객체 생성 후 객체 이름으로 접근
VarialbeTypes vt = new VariableTypes();
vt.instanceVarible
  • 소멸 시점 : Garbage Collector에 의해 객체가 사라질 때, 프로그래머가 명시적으로 소멸시킬 수 없음

클래스 멤버 변수의 특징

  • 선언 위치 : 클래스 {}영역에 선언되며 static 키워드를 붙임
  • 변수의 생성 : 클래스 영역에 클래스 로딩 시 메모리 등록
    • 개별 객체의 생성과 무관
    • 모든 객체가 공유
  • 변수의 초기화 : 타입 별로 default 초기화
  • 변수에의 접근 : 객체 생성과 무관하게 클래스 이름으로 접근
    • 객체를 생성하고 객체 이름으로도 접근 가능하나 static에 부합하지 않음
VariableTypes.classVariable = 10;
  • 소멸 시점 : 프로그램이 종료 될 때

지역 변수 & 파라미터 변수

  • 선언 위치 : 클래스 영역의 {} 이외의 모든 중괄호 안에 선언되는 변수들
  • 변수의 생성 : 선언된 라인이 실행될 때
    • 생성 메모리 영역 : thread 별로 생성된 stack 필요
  • 변수의 초기화 : 사용하기 전 명시적 초기화 필요
  • 변수에의 접근 : 외부에서는 접근이 불가하므로 소속 불필요
    • 내부에서는 이름으로 바로 접근
  • 소멸 시점 : 선언된 영역인 {} 을 벗어났을 때
profile
개발자 준비 중

0개의 댓글