일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 프로그래머스
- java
- @AllArgsConstructor
- github
- HashSet
- HTML
- DTO
- 부스트코스
- 캡슐화
- Python
- html tag
- entity
- 브랜치
- 에러
- 부트캠프
- Codeup
- SQL
- @NoArgsConstructor
- 알고리즘
- @builder
- 파이썬
- 코드업
- git
- 깃허브
- CRUD
- stringbuffer
- 자바
- 기본생성자
- lv1
- 상속
- Today
- Total
잉?
[JAVA] 캡슐화(Encapsulation)와 추상화(Abstraction)에 대해 알아보자 본문
캡슐화(Encapsulation)
클래스 안에 서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다.
즉, 클래스의 내부 변수와 메서드를 하나로 패키징 하는 것이다.
정보은닉
캡슐화를 하는 중요한 목적 중 하나이다.(캡슐화 ≠ 정보은닉)
접근제어자를 통해 데이터를 보호하고, 보호된 변수는 getter나 setter 등의 메서드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 캡슐화의 중요한 목적이다.
접근제어자
private < default < protected < public 순으로 많은 접근을 허용한다.
- private : 해당 클래스 안에서만 접근이 가능하다.
- default : 접근 제어자를 별도로 설정하지 않는다면 변수나 메서드는 default 접근 제어자가 자동으로 설정되어 동일한 패키지 안에서만 접근이 가능하다.
- protected : 동일 패키지의 클래스 또는 해당 클래스를 상속받은 클래스에서만 접근이 가능하다.
- public : 어떤 클래스에서도 접근이 가능하다.
[OOP] 객체지향의 특징 - 캡슐화(Encapsulation)와 정보 은닉 - 𝝅번째 알파카의 개발 낙서장
객체. 즉, 클래스의 내부 변수와 메소드를 하나로 패키징하는 특징이다. 객체에 선언된 변수나 메소드가 구분없이 중구난방으로 접근할 수 있다면 정상적인 객체로 보기 어렵다. 캡슐화와 비슷
blog.itcode.dev
07-02 접근 제어자
접근 제어자(access modifier)를 사용하여 변수나 메서드의 사용 권한을 설정할 수 있다. 다음과 같은 접근 제어자를 사용하여 사용 권한을 설정할 수 있다. * pri…
wikidocs.net
추상화(Abstraction)
정확하게 표현하기 힘든 것들을 중요한 부분이나 특징점을 잡아 설명하는 것을 말한다.
즉, 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법이라고 할 수 있다.
제어 추상화
- 불필요한 세부 정보는 숨긴다.
- 메소드의 작동방식과 같은 내부 로직을 숨기는 것을 말한다.
- 프로그래밍을 빠르게 설계하고 구현하기 위해 사용한다.
- 예시로 for문, while문도 반복하는 개념을 제어 추상화 한 것이라고 볼 수 있다. 코드를 반복하는 데 있어 내부 동작이 어떻게 이루어지는 가를 알 필요 없이, 반복 기능이 추상화된 문법을 복잡한 지식 없이 간단하게 이용해 프로그램을 구상할 수 있었던 것이다.
데이터 추상화
- 객체의 관련 속성만 표시한다.
- 간단한 개념으로 일반화 하는 과정을 말한다.
- 객체의 디테일함이 사라지고 공통된 특징만 남게 된다.
- 예시로 아이폰 → 휴대폰 → 통신기기 → 전자제품으로 추상화가 이어질 수 있다.
💠 객체 지향 개념과 추상화 완벽 이해하기
객체 지향(OOP) 개념과 특징 객체 지향 프로그래밍 이란, 많은 객체(Objcet)들이 모여서 상호 협력하면서 데이터를 처리하는 방식의 프로그래밍 설계 방법을 일컫는다. 좀더 쉽게 말하면, 프로그램
inpa.tistory.com
'자바(Java)' 카테고리의 다른 글
[JAVA] 상속(Inheritance)에 대해 알아보자. (0) | 2023.07.20 |
---|---|
[JAVA] OOP(Object-Oriented-Programming, 객체 지향 프로그래밍) + 대표적인 특징 (0) | 2023.07.18 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점 (0) | 2023.06.29 |
[Java] 다차원 배열 중 2차원 배열 (0) | 2023.06.13 |
[Java] 기본 생성자 + 기본 생성자가 필요한 이유 (0) | 2023.06.09 |