객체지향 프로그래밍이란 ?
- 주변의 많은 것들을 객체화하여 프로그래밍 하는 것
- 객체란 주체가 활용하는 것
- 블록 형태의 모듈화된 프로그래밍이 가능하여 신뢰, 수정용이, 재사용성이 높은 장점이 있따.
클래스란 ?
- 객체를 정의해 놓은 것 (객체의 설계도)
- 객체를 만들기 위한 툴임
객체란 ?
- 클래스를 데이터 타입으로 메모리에 생성된 것
JVM의 메모리 구조
1. class area(클래스 원형 로딩)
2. method stack
- 메소드들의 실행공간, 스레드 별로 관리
- stack이라 순서대로 쌓임
3. heap
- 객체를 저장
- 스레드에 의해 공유
- 생성된 객체는 프로그래머가 삭제할 수 없음 (가비지 컬랙터가 추후 삭제함)
선언 위치에 따른 변수의 분류
- 멤버 변수
- 클래스 멤버변수 (static int)
- 클래스 영역에 static 키워드
- 클래스 로딩시 메모리 등록
- 타입별로 default값 존재
- 객체 생성과 무관하게 클래스 이름으로 접근
- 프로그램 종료시 소멸
- 인스턴스 멤버 변수
- 클래스 영역 내에 선언
- heap에 생성
- 타입별로 default값 있음
- 객체 생성 후 객체 이름을 ㅗ접근
- 가비지 컬렉터에 의해 소멸
- 클래스 멤버변수 (static int)
- 지역변수 (파라미터 변수)
- 클래스 영역의 {}이외의 모든 중괄호 안에 선언
- 라인이 실행될때 선언
- 스레드 영역별로 생성된 스택영역
- 명시적 초기화 필요
- 외부에서 접근 불가능
- 선언된 영역 벗어날 때 소멸
메서드란?
현실의 객체가 하는 동작을 프로그래밍 화
코드 양이 확연히 줄겟지
★객체지향의 특징★
- 캡술화 : 클래스에 필드와 메소드를 묶어주는 것
- 정보은닉
- 모듈화
- 상속 : 부모가 갖는 자원을 물려주는 것 (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 |