20230313 [Java] return 예약어 + 멤버 변수의 접근제어자를 private 으로 선언하는 이유? 정보 은닉!

Daisy🌷·2023년 3월 13일
0

1-1 ) return 예약어

  • '이 함수의 결과 값을 반환합니다.'를 뜻하는 예약어가 바로 return 이다.
  • return 예약어는 함수 수행을 끝내고 프로그램 흐름 중에서 호출한 곳으로 다시 되돌아갈 때도 사용할 수 있다.
  • 메서드 실행 중 return 문을 만나게 되면 현재 실행중인 메서드를 종료하고 호출한 메서드로 되돌아간다.

1-2 ) return을 사용하여 메서드 종료

public class ExitMethod {
    public static void main(String[] args) {
        exampleMethod(2, 5);
        exampleMethod(3, 2);
        exampleMethod(100, 20);
        exampleMethod(102, 110);
    }
    public static void exampleMethod(int number1, int number2) {
        if (number2 > number1)
            return;
        int subtractedValue = number1 - number2;
        System.out.println(subtractedValue);
    }
}
  • number1과 number2의 두 매개 변수를 사용하는 exampleMethod 메서드가 있다.
  • 메서드에서 빼기를 수행하지만 number2가 number1보다 큰지 확인하고 이 조건이 true가 되면 return이 메서드를 종료하고 실행이 완료된다. void를 반환 유형으로 사용하므로 이 메서드는 값을 반환하지 않는다.

2-1 ) 접근제어자 (access modifier)

  • 접근 제어자 : 객체 지향 프로그램에서는 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 이러한 예약어를 접근 제어자라고 한다.
  • public 이라고 선언한 변수나 메서드는 외부 클래스에서 접근이 가능하며 외부 클래스가 사용할 수 있다는 뜻이다.
  • 반대로 접근 제어자를 private으로 선언한 변수나 메서드는 외부 클래스에서 사용할 수 없다.

2-2 ) get(), set() 메서드

  • private로 선언한 변수를 외부 코드에서 사용하려면 public 메서드를 제공해야 한다. public 메서드가 제공되지 않는다면 private로 선언된 변수에 접근할 수 있는 방법은 없다. 이때 사용할 수 있는 것이 바로 get(), set() 메서드이다.
package hiding;
public class Student {
	int studentID;
	private String studentName;
	int grade;
	String address;
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
}

2-3 ) 정보 은닉이란?

  • 변수를 public으로 선언하는 것과 변수를 private로 선언하고 나서 그 변수를 사용할 수 있도록 public 메서드를 제공하는 것의 차이는 무엇일까? 어차피 변수에 접근하는 것은 마찬가지인데 말이다.
  • 클래스의 멤버 변수를 public으로 선언하면 접근이 제한되지 않으므로 정보의 오류가 발생할 수 있다.
  • 이처럼 클래스 내부에서 사용할 변수나 메서드는 private로 선언해서 외부에서 접근하지 못하도록 하는 것을 객체 지향에서는 정보 은닉(information hiding)이라고 한다.
  • 정보 은닉은 객체 지향 프로그래밍의 특징 중 하나이며 자바에서는 접근 제어자를 사용하여 정보 은닉을 구현한다.
profile
티스토리로 블로그를 이전했습니다. 😂 구경 오세요! 👉🏻 https://u-ryu-logs.tistory.com

0개의 댓글