본문 바로가기
Programming Languages/Java

Chapter 13. 접근지정자, Getter, Setter

by 더 이프 2023. 1. 13.
728x90

목차

    1. 접근지정자

    ■ 접근지정자란?

    • 외부에서 어느정도 접근을 허용하는지에 대한 키워드이며 이를 통해 캡슐화의 특징을 가짐
    • 변수, 메소드, 클래스의 앞에 사용
    • 아무것도 입력하지 않으면 default 상태임
    • 4가지의 키워드가 있으며 각각 public, protected, default, private로 구성
    접근 지정자 클래스 내부 동일 패키지 하위 클래스 다른 패키지
    public O O O O
    protected O O O X
    default O O X X
    private O X X X

     

    2. Getter, Setter

    ■ Getter

    • 데이터를 가지고 올 때 사용
    • 필요한 필드 값을 가공함

    ■ Setter

    • 외부에서 주어진 값을 필드 값으로 수정
    • 접근지정자와 Getter, Setter를 통해 캡슐화 기능 활성

     

    3. Example

    ■ J11_Student

    package j11_접근지정자;
    
    public class J11_Student {
    
    	private String name;
    	private int age;
    
    	public J11_Student() {
    
    	}
    
    	public J11_Student(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public void printInfo() {
    		System.out.println("이름 : " + name);
    		System.out.println("나이 : " + age);
    	}
    
    }

    ■ J11_StudentDefault

    package j11_접근지정자.default1;
    
    public class J11_StudentDefault {
    
    	// private를 통해 데이터의 은닉
    	private String name;
    	private int age;
    
    	public J11_StudentDefault() {
    
    	}
    
    	public J11_StudentDefault(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    
    	public void printInfo() {
    		System.out.println("이름 : " + name);
    		System.out.println("나이 : " + age);
    	}
    
    	// Getter는 값을 가지고 오는 것이며 get변수명으로 지음
    	public String getName() {
    		return name;
    	}
    
    	// Setter는 값을 대입하여 주는 것이며 set변수명으로 지음
    	public void setName(String name) {
    		this.name = name;
    	}
        
    	// ${변수명}은 변수명을 카멜표기법으로 표기한 Getter를 호출
    	// ${name} 
    
    }

    ■ J11_StudentMain

    package j11_접근지정자;
    
    // 다른 패키지의 자료형을 사용하기 위해 import함
    import j11_접근지정자.default1.J11_StudentDefault; 
    
    public class J11_StudentMain {
    
    	public static void main(String[] args) {
    
    		J11_Student s1 = new J11_Student();
    		s1.printInfo();
    		J11_StudentDefault s2 = new J11_StudentDefault();
    		s2.name = "김준이";
    		System.out.println("이름 : " + s2.name);
            
            // 보호를 위해 직접 접근을 제한하고 메소드를 통해 데이터를 가져와야함
    		System.out.println("이름 : " + s2.getName());
    	}
    
    }