자유와 규제
프로그래밍 도구의 기본적인 목표는 생각하는 것을 자유롭게 표현할 수 있게 하는 것이지만, 이를 위한 다양한 규제가 필요하다.
지금까지 내가 배운 것 중에는 데이터 타입이 규제에 해당한다.
추상클래스, final, 접근 제어자, 인터페이스 등도 규제에 해당한다.
접근 제어자
접근 제어자는 클래스의 멤버(변수와 메소드)들의 접근 권한을 지정한다.
package org.opentutorials.javatutorials.accessmodifier;
class A {
public String y(){
return "public void y()";
}
private String z(){
return "public void z()";
}
public String x(){
return z();
}
}
public class AccessDemo1 {
public static void main(String[] args) {
A a = new A();
System.out.println(a.y());
// 아래 코드는 오류가 발생한다.
//System.out.println(a.z());
System.out.println(a.x());
}
}
위의 코드를 보면
y라는 메소드는 public
z라는 메소드는 private이다.
public이라는 메소드는 누구든지 그 클래스의 메소드를 사용할 수 있다는 것을 의미한다.
반면에, private라는 메소드는 그 클래스 내부에서만 사용 가능하다.
따라서, 클래스 AccessDeom1에서 z코드를 호출했을때 오류가 발생하는 것이다.
이 public과 private이 대표적인 접근 제어자이다.