티스토리 뷰
목차
Pravite 변수의 필요성
private 멤버 변수로 선언 후 메서드로 접근하는 이유
정보은닉 & 캡슐화
- 접근제어자를 private로 선언하면 외부 클래스에서 사용불가
package com.br.objectArray.medel.vo;
public class BookRepeat {
// 정보은닉, 캡슐화
private String title; // 도서명
private String author; // 도서저자
private int price; // 도서가격
private String publisher; // 도서출판사
생성자(Constructor)란?
객체 생성 시 초기화를 담당하는 중요한 요소이다. 객체의 상태를 안정적으로 설정하고 코드의 가독성과 유지보수성을 높일 수 있다. 생성자는 객체 지향 프로그래밍 언어에서 객체를 생성할 때 초기 상태를 설정하는 중요한 역할을 한다.
1. 객체초기화
생성자는 객체가 생성될 때 필수적인 데이터를 객체에 제공하여, 객체가 유효한 상태로 시작할 수 있도록 한다. 이를 통해 객체의 무결성을 보장한다.
2. 코드 재사용성 및 유지보수성 향상
생성자 오버로딩(동일한 이름의 생성자를 여러개 정의하는 것)을 통해 다양한 방법으로 객체를 초기화할 수 있다. 이는 코드의 재사용성과 유지보수성을 향상시킨다.
3. 객체의 일관성 유지
생성자는 객체가 정상적인 상태로만 생성되도록 강제한다. 필드를 final로 선언하여 변경 불가능한 객체를 만들 때 생성자를 통해 초기값을 설정해야 한다.
예시)
BookRepeat 클래스의 두 개의 필드가 있으며 객체가 생성될 때 이 필드들이 반드시 초기화되어야한다.
public class BookRepeat {
// 필드작성(정보은닉, 캡슐화)
private String title; // 도서명
private String author; // 도서저자
private int price; // 도서가격
private String publisher; // 도서출판사
// 기본생성자
public BookRepeat() {}
// 매개변수 생성자
public BookRepeat(String title, String author, int price, String publisher) {
this.title = title;
this.author = author;
this.price = price;
this.publisher = publisher;
}
생성자의 종류
1. 기본생성자
기본 생성자란?
기본생성자란, 매개변수가 없는 생성자를 의미한다. 클래스 내에 생성자가 명시적으로 정의되어 있지 않으면 JAVA 컴팡일러는 매개변수가 없다. 몸체가 비어있는 기본 생성자를 자동으로 생성해준다. > 이는 객체를 생성할 때 기본적인 초기화를 수행할 수 있도록 하기 위함이다.
작성하는 방법
// 기본생성자
public BookRepeat() {}
생성자 사용 목적
- 인스턴스 생성 시점에 수행할 명령이 있는 경우 사용
- 매개변수가 있는 생성자의 경우 매개변수로 전달받은 값으로 필드를 초기화하며 인스턴스를 생성할 목적으로 사용
- 작성한 생성자 외에는 인스턴스를 생성하는 방법을 제공하지 않는다는 의미(초기값 전달 강제화)
2. 매개변수 생성자
Private 변수 접근하는 방법
private로 선언한 변수에 접근하기 위해서는?
해당 class 안의 method를 통해서만 가능
Getter method
private 변수를 외부로 꺼내는 method
데이터 복사본을 던져주기 때문에 원래 객체 데이터를 손상시키지 않는다. 따라서 원본데이터는 안전하다. 간단하게 생성자를 통해서만 데이터를 넣어줄 수 있다. getter method만 있을 경우 외부에서 객체 원본 데이터를 변경할 수 없다.
< 선언방식 >
- 접근제한자 : public
- 리턴타입 : 필드타입(String)
- method 이름 작성 규칙 : get + 필드명 (get + Title)
- 리턴값 : 필드값 (return title)
※ method 이름 작성 시 必 첫문자는 대문자로 해야한다.
Ex )
public String getTitle() {
return title;
}
※ Getter는 필드 타입이 boolean일 경우,get으로 시작하지 않고 is 로 시작하는 것이 관례이다.
Ex )
public boolean isStop() {
return stop;
}
Setter method
private 변수에 값을 넣는 method
외부에서 method를 통해 데이터에 접근 시 method는 매개값을 검증하여 유효한 값만 데이터로 저장할 수 있다.
< 선언방식 >
- 접근제한자 : public
- 리턴타입 : void (반환할 값이 없으므로)
- method 이름 작성 규칙 : set + 필드명
※ method 이름 작성 시 必 첫문자는 대문자로 해야한다.
Ex )
public setTitle(String title) {
this.title = title;
}
Getter method & Setter method 사용하는 이유 정리
1. 변수를 public으로 두고 모든 곳에서 접근 / 변경이 가능하게 된다면 변경을 추적하기 어렵고, 유효성 검사 등 들어오면 안되는 값이 들어올 수 있는 문제가 있다.
2. 또한 변경 시 공통적으로 수행해야 하는 후속 작업도 변경하는 곳에서 일일히 다 추가해주어야 한다.
3. 변수의 변경을 메서드로 감싸게 된다면(캡슐화), 단일 변경점을 두게 되어 변경의 추적이 쉬워지고, 메서드 내에 유효성 검사 / 공통 후속 작업(로깅, 알림)을 한 곳에서 설정할 수 있다.
4. 불변 데이터(상수)는 변경이 불가능 한 형태이므로 해당 리팩토링을 적용할 필요는 없다.
// getter & setter method 작성
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
// author getter / setter
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
// price getter / setter
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
// publisher getter / setter
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public static void main(String[] args) {
Book bk1 = new Book();
// setter를 사용하여 private 변수값 설정해주기
bk1.setTile("자바의 정석");
// getter를 사용하여 private 변수값 읽어오기
String str = bk1.getTitle();
System.out.println("도서명" : + str);
private String title; // 도서명
private String author; // 도서저자
private int price; // 도서가격
private String publisher; // 도서출판사
'JAVA > 객체(Object)' 카테고리의 다른 글
자바(JAVA) 객체(Object) 접근제한자(public, private, protected, default) (0) | 2024.07.02 |
---|
- Total
- Today
- Yesterday
- oracla 사용자 계정 만드는 방법
- 코딩활용능력 자격증 기출문제
- oracle 권한 부여 명령어
- 코딩활용능력자격증 문제
- 코딩활용능력 기출문제
- oracle 권한주는 명령어
- 정보처리기능사 시험 문제
- oracle 시스템 명령어
- 파이썬 elif문
- 정보처리 기능사 필기 준비
- 정보처리기능가 필기 시험문제
- 코딩활용능력 자격증
- 정보처리기능사 필기 문제
- ocalce 사용자 계정 삭제하는 방법
- 코딩활용능력자격증 문제풀이
- oracle 자원 사용 권한 주는 명령어
- 파이썬 else 문
- 정보처리기능사 자격증 문제
- 코딩활용능력 자격증 시험문제
- oracle 사용자 계정 만들기
- 정보처리기능사 필기 준비
- 정보처리기능사 자격증 준비
- 코딩활용능력 자격증 파이썬
- 개발자 자격증 준비
- 코딩활용능력 자격증 조건문
- 정보처리기능사 준비
- Oracle
- 정보처리산업기사 자격증
- 코딩활용능력 시험일정
- 코딩활용능력자격증
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |