[JAVA]

Abstraction + @ (추상화와 그 외의 중요한 것들)

지기음 2023. 1. 17. 21:43

객체지향 프로그래밍이란 ?

  •   주변의 많은 것들을 객체화하여 프로그래밍 하는 것 
  •  객체란 주체가 활용하는 것
  • 블록 형태의 모듈화된 프로그래밍이 가능하여 신뢰, 수정용이, 재사용성이 높은 장점이 있따. 

 

클래스란 ?

  • 객체를 정의해 놓은 것 (객체의 설계도)
  • 객체를 만들기 위한 툴임 

 

객체란 ?

  • 클래스를 데이터 타입으로 메모리에 생성된 것 

 

JVM의 메모리 구조 

1. class area(클래스 원형 로딩)

2. method stack

  • 메소드들의 실행공간, 스레드 별로 관리 
  • stack이라 순서대로 쌓임 

3. heap

  • 객체를 저장
  • 스레드에 의해 공유
  • 생성된 객체는 프로그래머가 삭제할 수 없음 (가비지 컬랙터가 추후 삭제함)

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

  1. 멤버 변수 
    1. 클래스 멤버변수 (static int)
      1. 클래스 영역에 static 키워드 
      2. 클래스 로딩시 메모리 등록
      3. 타입별로 default값 존재 
      4. 객체 생성과 무관하게 클래스 이름으로 접근 
      5. 프로그램 종료시 소멸
    2. 인스턴스 멤버 변수 
      1. 클래스 영역 내에 선언
      2. heap에 생성
      3. 타입별로 default값 있음
      4. 객체 생성 후 객체 이름을 ㅗ접근
      5. 가비지 컬렉터에 의해 소멸
  2. 지역변수 (파라미터 변수)
    1. 클래스 영역의 {}이외의 모든 중괄호 안에 선언
    2. 라인이 실행될때 선언
    3. 스레드 영역별로 생성된 스택영역
    4. 명시적 초기화 필요
    5. 외부에서 접근 불가능
    6. 선언된 영역 벗어날 때 소멸

 

메서드란?

현실의 객체가 하는 동작을 프로그래밍 화

코드 양이 확연히 줄겟지

 

 

★객체지향의 특징★

  • 캡술화 : 클래스에 필드와 메소드를 묶어주는 것 
    • 정보은닉
    • 모듈화
  • 상속 : 부모가 갖는 자원을 물려주는 것 (extends)
    • 단일 상속 
    • private와 생성자는 물려주지 않음 
    • Object (최상위 클래스 상속 안하면 자동 추가)
  • 다형성 
    • 오버라이딩 
      • 부모가 갖는 메소드들을 자식클래스에서 재정의
    • 오버로딩
      • 한 클래스 내에 동일한 메소드를 여러개 구현 

 

 

 

<접근제한자>

  • public : 서로 다른 패키지에서도 접근이 가능하다
  • protected : 서로 같은 패키지에서 접근 가능 + 상속받은 다른 패키지에서 접근 가능
  • default(생략함) : 서로 같은 패키지에서 접근
  • private : 같은 클래스 내에서만 접근 가능 

 

 

중요한 점 : 부모접근제한자보다 자식 접근 제한자가 높을수 없어!!!!

 

 

 

 

후기 : JAVA전공수업떄 다 배운내용이다. 하지만 만약 기술면접떄 이러한 내용을 물어본다면 잘 대답하지 못 할 듯 하다. 알고 있떠라도 말로 하는 연습이 필요한 부분이라고 생각한다. 

JVM의 메모리 구조는 처음 배웠다. 잘 익혀두자 

'[JAVA]' 카테고리의 다른 글

Polymorphism  (0) 2023.01.21
Inheritance + @  (0) 2023.01.21
NullPointerException  (0) 2022.12.22
discord로 IntelliJ하는거 티내는 방법  (0) 2022.12.21
java char to int  (0) 2022.12.21