JAVA 객체지향 개념 정리

2025. 9. 16. 19:58·JAVA

👍 무엇을 새롭게 알았는지

  • JVM 메모리 구조
    • Method Area
      - 프로그램 시작 시 정보가 저장
      - 클래스 정보(.class 파일) 가 올라가는 곳.
      - 클래스의 메서드 정보, static 변수 등이 저장
      - 모든 객체가 공유하는 공용 공간
    • Stack Area
      - 가장 위에 있는 접시를 먼저 꺼내듯 비슷한 구조
      - 선입후출(LIFO) 구조 입니다. 먼저 들어온 것이 가장 늦게 나간다는 뜻
      - 메서드가 호출될 때마다 새로운 접시한장(스택프레임)이 쌓임
      - 가장 위의 접시(최근 호출된 메서드)가 먼저 실행
      - 메서드 실행이 끝나면 스택에서 제거

    • Heap Area
      - new 키워드로 생성된 객체가 저장되는 곳
      - 객체의 실제 데이터가 저장되고 데이터의 주소는 stack 영역에 저장
  • 래퍼클래스
    • 기본자료형을 객체로 감싸는 클래스를 의미
    • 래퍼클래스가 담겨 있는 변수도 참조형 변수와 같으나, 출력 시 메모리 주소값이 나오지 않는 것이 차이
      • 내부적으로 toString()이 오버라이딩 되어 있기 때문!
    • 왜 사용하는가?
      • 기본형은 객체와 같이 속성, 기능을 가질 수 없음, 그러나 객체는 기능 제공이 가능
      • 기본형을 감싼 객체를 만들어 기능을 제공하면 편리하게 데이터처리를 할 수 있음
    • 오토박싱 vs 언박싱
      • 래퍼클래스 ↔︎ 기본형으로 형변환은 굉장히 자주 일어남
      • Java에서는 이 형변환 과정을 자동으로 지원해 줌
    • 기본형 연산과 래퍼형 연산의 성능 비교
      • 래퍼형은 내부적으로 데이터를 감싸고 있기때문에 연산시 불리
      • 객체에서 기본형 값을 꺼내서 연산하는 추가작업이 발생
      • 이런 추가 작업때문에 기본형보다 래퍼클래스는 연산 속도가 느림
      • 빠른 작업이 필요한 경우 기본형을 직접 활용하는 것이 좋은 선택
  • Static 
    • static 키워드로 선언된 변수와 메서드는 MethodArea에 저장됨
    • static은 공유가 필요한 곳에 사용되어야 함
    • static 메서드에서는 인스턴스 변수에 접근할 수 없음
      • 객체가 먼저 생성되어야 하는데 생성없이 접근할 수 없는 것
    • 쉽게 정리하자면 객체마다 다를 필요 없이 항상 똑같아야 하는 것일 때 static을 사용함 ⭐️
  • final
    • final의 용도
      • 변수는 변경이 불가능하게 함
      • 클래스는 상속할 수 없게 함
      • 메서드는 수정할 수 없게 만듬(오버라이딩 불가)
    • 상수 : 변하지 않고 항상 일정한 값을 갖는 수
      • Java에서는 상수를 대문자로 표현하는 것이 관례
      • 변경되면 안되는 값이므로 static fianl 키워드를 사용해 선언
        • static으로 선언하는 이유는 여러곳에서 값을 공유해 쓰일 목적으로 활용

 

인터페이스

  • 인터페이스는 설계 표준
  • 클래스가 따라야 할 최소한의 공통 규칙을 정의하는 역할
    • 최소한의 규격을 정의하고 세부 구현은 각 클래스에서 진행하고 확장할 수 있도록 함
  • 인터페이스를 응용하여 인터페이스 다중구현, 인터페이스 다중 상속 처리를 할 수 있음
  • 인터페이스에 변수를 선언하는 경우는 자동으로 상수로 선언됨
    • static 선언으로 인하여 구현체 없이 활용 가능

인터페이스 - 캡슐화

  • 캡슐화를 통해 정보를 보호하고 필요한 경우에만 안전하게 접근할 수 있도록 할 수 있음
  • 기본적으로 접근제어자의 개념에 대해 이해를 바탕으로 작업이 진행되어야 함 

접근제어자

접근제어자 클래스 내부 패키지 내부 상속한 클래스 전체 공개
public 🟢 🟢 🟢 🟢
protected 🟢 🟢 🟢 ❌
default 🟢 🟢 ❌ ❌
private 🟢 ❌ ❌ ❌

 

캡슐화가 적용된 클래스는 데이터를 private으로 보호하고 있음

이에 따라 데이터 조회나 변경이 필요한 경우에 안전한 접근방법을 요구함

그 과정을 수행할 수 있는 메서드 개념이 게터(Getter) 와 세터(Setter) 

  • 게터(Getter) : 데이터를 안전하게 접근하기 위해 사용
  • 세터(Setter) : 데이터를 안전하게 설정/변경하기 위해 사용
    • 단, 무분별한 세터를 방지하여 보호된 데이터를 목적에 맞게 활용될 수 있도록 작업하는 것이 중요!

'JAVA' 카테고리의 다른 글

[JAVA] 자바 개념 확장 - Generic, Lambda, Stream, Thread  (0) 2025.09.17
[JAVA] 자바 개념 확장 - Exception, Optional, Colletion  (0) 2025.09.17
JAVA 문법 규칙 및 GitHub 커밋 컨벤션 학습  (0) 2025.09.15
JSP/Servlet 기초  (1) 2025.09.05
Thymleaf  (0) 2025.09.05
'JAVA' 카테고리의 다른 글
  • [JAVA] 자바 개념 확장 - Generic, Lambda, Stream, Thread
  • [JAVA] 자바 개념 확장 - Exception, Optional, Colletion
  • JAVA 문법 규칙 및 GitHub 커밋 컨벤션 학습
  • JSP/Servlet 기초
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백엔드 기초
    실시간 데이터 처리
    Github
    MVC
    BEAN
    다형성
    경합조건과 교착상태
    Stomp
    java
    RestTemplate
    jsp
    for문
    Til
    객체지향프로그래밍
    백엔드 기초다지기
    SpringSecurity
    Spriingboot
    WebSocket
    웹소켓
    String.format
    프로세스와 쓰레드
    JPA
    객체지향
    HTML&CSS
    algorithm
    Spring
    thymleaf
    네트워크 기초
    Java 문법기초
    git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
JAVA 객체지향 개념 정리
상단으로

티스토리툴바