본문 바로가기
[JAVA]/[자바 기초]

[자바 기초] 접근 제어 지시자, get(), set() 메서드

by 북방바다코끼리표범 2023. 8. 1.

복습

https://shins99.tistory.com/17

 

[자바 기초] 객체와 객체 간 상호작용

복습 https://shins99.tistory.com/16 [자바 기초] 생성자 복습 https://shins99.tistory.com/12 [자바 기초] 함수와 메서드 복습 https://shins99.tistory.com/11 [자바 기초] 객체 지향 언어란? 복습 https://shins99.tistory.com/9 [

shins99.tistory.com


💡 학습 목표 

1. 접근 제어 지시자란? 
2. 4가 종류에 대해 알아 보자 
3. getter, setter 메서드에 대해 이해 하자

객체의 기능은 메서드를 통해서 완성하자!

접근 제어 지시자 (accesss modifier)

  • 특정 대상에 대해, 클래스 외부로부터 접근 권한을 부여받는 명령어
  • 대상 :변수, 메서드, 함수, 클래스 등 대부분

 

접근 제어 지시자
private
같은 클래스 (java 파일) 내부에서만 접근 가능
default(기본값)
같은 패키지 내부에서만 접근 가능
protected
같은 패키지 내부에 있거나,
다른 패키지여도 상속 관계의 클래스일 때는 접근 가능
 public
같은 프로젝트 내라면 어디에서든지 접근 가능

Bank 클래스 설계 해보기

public class Bank {
	
	String name; // 계좌 번호 
	int balance; // 계좌 잔액 
	 
	// 입금 
	public void deposit(int money) {
		this.balance += money;
	}
	
	// 출금 
	public int withdraw(int money) {
		// 메서드 영역 안에 사용하는 변수는 지역 변수라고도 한다. 
		int result = 0; 
		this.balance -= money;
		result = money;
		return result; 
	}
	
	// 잔액 확인 
	public void showInfo() {
		System.out.println("현재 계좌 잔액은 " + balance + " 입니다");
	}
	
} // end of class

Bank 2단계 설계 접근 제어 지시자 추가 

public class Bank {
	// 접근 제어 지시자 private - 자기 자신에서만 사용 가능 
	private String name; // 계좌 번호 
	private int balance; // 계좌 잔액 
	 
	// 입금 
	public void deposit(int money) {
		this.balance += money;
	}
	
	// 출금 
	public int withdraw(int money) {
		// 메서드 영역 안에 사용하는 변수는 지역 변수라고도 한다. 
		int result = 0; 
		this.balance -= money;
		result = money;
		return result; 
	}
	
	// 잔액 확인 
	public void showInfo() {
		System.out.println("현재 계좌 잔액은 " + balance + " 입니다");
	}
	
} // end of class

get() 메서드

  • private 으로 선언된 멤버변수(필드)에 접근해서 값을 읽을 수 있는 메서드 (read-only)

         - 반드시 return 키워드가 필요함, 매개변수가 없음

public 반환자료형 get메서드명 () {
	return this.멤버변수;
}

 

set() 메서드

  • private 으로 선언된 멤버변수(필드)에 접근해서 값을 수정할 수 있는 메서드
  • 기본적으로 return 키워드가 필요하지 않음 (반환 자료형이 없음)

              - 방어적 코드 작성에 활용할 수 있음 (메소드 종료시키는 용도)

              - void로 작성, 반드시 매개변수가 들어가야 함

public void set메서드명(자료형 매개변수) {
	// 방어적 코드 작성 가능
    if () {
    	값이 잘못 되었을 때 코드;
        return; // 메서드 종료
        }
        // 멤버 변수의 값 수정
        this.멤버변수 = 매개변수;
}

💡 연습 문제 

Book 클래스를 설계 해주세요 
Car 클래스를 설계 해주세요

class 설계 쪽

Book

public class Book {

	private String name;
	private int price;

	public Book(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public int getPrice() {
		return price;
	}

	public void setName(String name) {
		if (name == "") {
			System.out.println("잘못 입력하셨습니다.");
		} else {
			this.name = name;
		}
	}

	public void setPrice(int price) {
		if (price == 0) {
			System.out.println("잘못 입력하셨습니다.");
		} else {
			this.price = price;
		}
	}
}

Car

public class Car {
	private String carName;
	private int carPrice;
	private int carNum;

	public Car(String carName) {
		this.carName = carName;
	}

	public String getCarName() {
		return carName;
	}

	public int getCarPrice() {
		return carPrice;
	}

	public int getCarNum() {
		return carNum;
	}

	public void setCarName(String carName) {
		if (carName == "") {
			System.out.println("잘못 입력했습니다.");
		} else {
			this.carName = carName;
		}
	}

	public void setCarPrice(int carPrice) {
		if (carPrice == 0) {
			System.out.println("잘못 입력했습니다.");
		} else {
			this.carPrice = carPrice;
		}
	}

	public void setCarNum(int carNum) {
		if (carNum == 0000) {
			System.out.println("잘못 입력했습니다.");
		} else {
			this.carNum = carNum;
		}
	}

}

 

main 테스트 쪽

Book

public class BookMainTest {

	public static void main(String[] args) {

		Book book1 = new Book(null);
		book1.setName("Say No");
		book1.setPrice(10_000);

		System.out.println("책의 이름은 : " + book1.getName() + "입니다.");
		System.out.println("책의 가격은 : " + book1.getPrice() + "원 입니다.");

	}

}

실행결과

책의 이름은 : Say No입니다.
책의 가격은 : 10000원 입니다.

Car

public class CarMainTest {

	public static void main(String[] args) {

		Car car1 = new Car(null);
		car1.setCarName("제네시스 Gv80");
		car1.setCarPrice(8600);
		car1.setCarNum(1213);
		
		System.out.println("구매할 차량의 이름은 : " + car1.getCarName() + " 입니다.");
		System.out.println("구매할 차량의 가격은 : " + car1.getCarPrice() + "만원 입니다.");
		System.out.println("구매한 차량의 번호는 : " + car1.getCarNum() + " 입니다.");
	}

}