일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 자바
- spring
- 프로그래밍언어
- Git
- 메소드
- 리눅스
- 자바기초
- Elk
- 프로그래밍
- 스프링
- 프로그래밍기초
- 초보코딩
- eclips
- 데이터베이스
- 초보코딩탈출
- 자바 스프링
- 코딩초보
- 기초코딩
- JAVA기초
- github
- Java
- 컴퓨터과학개론
- 클래스
- 배열
- 제이쉘
- 자바프로그래밍
- JShell
- 이클립스
- 알고리즘
- 스프링 기초
- Today
- Total
키보드워리어
【자바】캡슐화의 기본이해 - 1 본문
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
오늘은 자바에서 중요한 개념인 캡슐화에 대해 알아보겠습니다.
자바 캡슐화란
캡슐화 | Encapsulation
이전 포스팅한 MotorBike 클래스의 문제가 있습니다.
2022.11.05 - [JAVA 완전정복!!/JAVA section 8] - 【자바】객체지향 프로그래밍
그것은 MotorBikeRunner 클래스가 직접적으로 MotorBike의 인스턴스 변수에 접근할 수 있다는 것인데
이건 별개의 클래스이기 때문에 좋지 않습니다.
엄연히 따지면 독립적인 또 하나의 클래스인 것이 중요한 데이터가 있는 클래스의 내부 변수에 접근하고 있죠.
이것은 캡슐화를 파괴하는 행위입니다.
캡슐화: Encapsulation is the concept that only this class should have access to the data(state) inside the specific class
캡슐화란 오직 특정한 클래스만 내부의 데이터에 접근할 수 있어야 한다는 개념입니다.
다른 클래스는 이 데이터에 접근하려면 해당 클래스의 동작(behaviour)인 메소드를 통해야 합니다.
이전 포스팅에서 우리는 motorbike의 상태를 외부에서 (runner클래스) 제어했습니다. 이제 이 변수를 비공개로 전환해봅니다.
speed 변수를 private로 바꾸었습니다. 이렇게 하면
그 순간부터 변수가 비공개(캡슐화)되어 클래스 외부에서는 데이터에 접근할 수 없고 runner클래스에서 speed변수에 접근할 수 없게 됩니다!
그렇다면 어떻게 캡슐화된 데이터를 사용(인스턴스)해줄 수 있을까요?
오류를 수정하려면 데이터를 밖에 노출시키는 메소드를 추가하면 됩니다.
SET 메소드 사용해보기
캡슐화를 하면은 한 객체를 다른 객체로부터 “보호”하는 것 외부 객체가 직접 객체 내의 데이터를 제어하지 못하도록
[setSetter] 메소드를 생성해서 이 메소드를 거쳐서 다른 객체와 클래스가 값을 바꿔줄 수 있게 합니다.
이것이 데이터를 클래스 안에 안전하게 가두는 방법입니다.
메소드 Set과 식별자 this
setSpeed 메소드를 만들었어요. 여기서 speed변수를 사용하고 싶다면
이 동작에서 this생성자를 사용해보세요!
this.speed는 멤버 변수를 가리키게 되고 speed 변수는 지역변수를 가리킵니다.
(this.speed와 speed는 다른 변수입니다!)
motorBikeRunner 클래스에서 Ducati객체의 .setSpeed 메소드에서
이 메소드안에 인자를 넣어줌으로 캡슐화 시킬 수 있습니다.
Getter와 이를 활용한 Getter와 Setter 생성
메소드 Get
MotorBikeRunner의 ducati 인스턴스 클래스의 속도를 40으로 설정했는데 이후의 ducati의 속도가 궁금하다면
getter메소드를 써야 합니다.
입력값은 필요 없어요, 왜냐고요? 출력이 목적이거든요.
Int getSpeed(){
Return this.speed;
}
이렇게 motorBike 클래스에서 코딩하고 Runner클래스에서 honda객체의 getSpeed메소드를 쓰면 어떻게 될까요?
이제 private 된 데이터도 출력이 되네요!
더 재밌는 것은 이클립스 프로그램이 자동으로 만들게 할 수 있다는 것입니다.
원본 클래스에서 오른쪽 마우스를 클릭 - [Source] - [Generate Getters and Setters]를 누르면
자동으로 getter와 setter가 만들어집니다!
이제 get,set 메소드는 이 방법으로 쉽게 만들 수 있습니다.
'JAVA > 입문' 카테고리의 다른 글
【자바】자바 생성자 소개 (0) | 2022.11.15 |
---|---|
【자바】캡슐화의 기본이해 - 2 (1) | 2022.11.09 |
【자바】객체지향 프로그래밍 (1) | 2022.11.05 |
【자바】디버깅 모드 - Step over 와 Step into에 대해 알아본다 (0) | 2022.10.13 |
【자바】디버깅 소개 (0) | 2022.10.12 |