본문 바로가기

Java

[Java] 20

접근 제어자(access modifier)

private 사용 이유

- private을 통해 데이터에 직접 접근하는 것을 방지함으로써 유효한 값만 다룰 수 있고,

어떻게 동작하는지를 외부로부터 감출 수 있다.(데이터 은닉)

객체 지향 언어

- 코드가 독립적으로 존재할 수 있도록 지향하는 언어

- 객체라는 개념을 기반으로 한 프로그래밍 패러다임

객체 지향 언어의 특징

- 다형성 : 어떤 한 요소에 여러 개념을 넣어 놓는 것(오버로딩, ...)

- 캡슐화 : 데이터와 코드의 형태를 외부로부터 알 수 없게 감추는 방법(데이터 은닉)

- 추상화 : 객체의 공통적인 특성을 파악해서 필요 없는 특성을 제거하는 과정

- 상속 : 새로운 클래스가 기존 클래스의 코드를 사용할 수 있게 하는 기능

 

 

 

실습(접근 제어자(1))

- Test.java에 접근 제어자를 이용하여 변수 및 메소드 생성

public class Test {
	private int pri;
	protected int prot;
	int defa;  // 생략하면 default
	public int pub;
	
	public void test() {
		System.out.println("같은클래스에서 사용 가능한지 확인용 메소드");

		// private, protected, default, public 모두 같은 클래스에서는 사용 가능하다.
		System.out.println(pri);
		System.out.println(prot);
		System.out.println(defa);
		System.out.println(pub);
		priF();
		proF();
		defaF();
		pubF();
	}
	
	private void priF() {
		System.out.println("private 메소드 실행됨");
	}
	
	protected void proF() {
		System.out.println("protected 메소드 실행됨");
	}
	
	void defaF() {
		System.out.println("default 메소드 실행됨");
	}
	
	public void pubF() {
		System.out.println("public 메소드 실행됨");
	}

}

1. 같은 패키지의 Main.java에서 실행

public class Main {
	public static void main(String[] args) {

		Test t = new Test();

//		System.out.println(t.pri);  // private은 같은 클래스에서만 사용 가능(직접적으로 값을 줄 수 없다.)
//		t.priF();
		
		System.out.println(t.prot);
		t.proF();
		
		System.out.println(t.defa);
		t.defaF();
		
		System.out.println(t.pub);
		t.pubF();

	}
}

 

결과

 

2. 다른 패키지의 Main.java에서 실행

- public만 다른 패키지, 다른 클래스에서 사용 가능하다.

import accessTest.Test;

public class Main {
	public static void main(String[] args) {

		Test t = new Test();
		
//		System.out.println(t.pri);  // private은 같은 클래스에서만 사용 가능
//		t.priF();
		
//		System.out.println(t.prot);
//		t.proF();
		
		System.out.println(t.pub);
		t.pubF();
	}
}

 

결과

 

실습(Getter와 Setter)

1. 유저 정보 대입하기

(1) User.java에 getter와 setter 생성

public class User {

	private String name;
	private String id;
	private String pw;
	private int age;
	

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}

	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

 

(2) Main.java에서 실행

public class Main {
	public static void main(String[] args) {

		User kim = new User();
		kim.setName("김철수");
		System.out.println(kim.getName());
		kim.setAge(-500);

	}
}
결과

 

'Java' 카테고리의 다른 글

[Java] 22  (0) 2022.01.22
[Java] 21  (0) 2022.01.21
[Java] 19  (0) 2022.01.17
[Java] 18  (0) 2022.01.13
[Java] 17  (0) 2022.01.11