Presentation is loading. Please wait.

Presentation is loading. Please wait.

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.

Similar presentations


Presentation on theme: "5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진."— Presentation transcript:

1 5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진

2 목 차 5.1. 접근 제한자 5.2. 접근 제한의 목적 5.3. 접근 권한 5.4. 접근 제한자의 종류
5.접근 제한자의 이해 목 차 5.1. 접근 제한자 5.2. 접근 제한의 목적 5.3. 접근 권한 5.4. 접근 제한자의 종류 5.5. 허용된 접근단계 5.6. 예 제 5.7. 접근 제한자 최종정리 5.8. 참 고 문 헌 / 자 료

3 1.접근제한자 5.1 접근 제한자의 개념 5.1. 접근 제한자 접근 제한자는 객체지향 언어의 중요한 특성 중에 하나인
자바는 클래스 내의 멤버 변수 접근을 제한할수 있는 방법으로 접근 제한자를 제공하고 있다. 접근 제한자는 객체지향 언어의 중요한 특성 중에 하나인 캡슐화(encapsulation)와 정보은폐(information hiding)를 제공한다. 접근 제한자 public, protected, default, private는 메소드와 멤버 변수들의 접근을 제어하기 위해서 차등이 있는 접근권한을 부여 ※ 접근 한정자가 없는 멤버 변수는 같은 패키지 내에서 사용이 가능하다.

4 1.접근제한자 5.2 접근 제한의 목적 객체를 작성할 때 (객체가 클래스로부터 5.2. 접근 제한의 목적
5.2 접근 제한의 목적 객체를 작성할 때 (객체가 클래스로부터 생성되므로 클래스를 작성할 때) 프로그램 작성자는 숨겨야 하는 정보 (private) 와 공개해야 하는 정보(public)를 구분하여 기술 할 수 있는데 객체를 사용하는 사람은 객체 중에 공개하는 정보에만 접근할 수 있다. 이러한 기법을 제공함으로써 객체의 사용자로부터 정보를 은폐 (information hiding)를 할 수 있게 된다.

5 5.3. 접근 권한 접근권한에 대하여 주목해야 할 부분 한 메소드 에서 다른 클래스의 멤버 변수나 메소드 로의 접근 가능성
한 클래스가 다른 클래스를 상속받을 때 각 접근 제한자의 사용에 따라 자식 클래스가 부모클래스의 메소드 혹은 멤버 변수에 접근할 수 있는 권한의 변화

6 Public으로 선언된 객체 변수는 소속된 클래스가 접근 가능 하면 항상 접근 하다는 것을 의미 한다
5.4. 접근 제한자 종류와 권한 - Public Public으로 선언된 객체 변수는 소속된 클래스가 접근 가능 하면 항상 접근 하다는 것을 의미 한다 즉 어느 곳에서나 접근 할 수 있다 공개된 인터페이스 객체의 사용자들은 공개된 인터페이스를 통해서만 객체에 접근할 수 있다 숨겨진 데이터와 메소드들 public 객체 public public X X 숨겨진 데이터에 대한 접근 불가( Private )

7 Private 로 선언된 객체변수는 소속된 클래스에서만 사용 Private로 선언된 변수는 그 클래스 내부에서만 사용,
5.4. 접근 제한자 종류와 권한 - Private Private 로 선언된 객체변수는 소속된 클래스에서만 사용 Private로 선언된 변수는 그 클래스 내부에서만 사용, 하위클래스에도 상속되지 않음 클래스 외부에서 private로 선언된 객체 변수에 접근하려면 에러가 발생 외부 클래스에서 이 변수에 직접 접근할 수 없음

8 Protected로 선언된 객체변수는 그 변수가 소속된 클래스의 하위클래스와 소속된 클래스와 같은 패키지 에 있는
5.4. 접근 제한자 종류와 권한 - Protected Protected로 선언된 객체변수는 그 변수가 소속된 클래스의 하위클래스와 소속된 클래스와 같은 패키지 에 있는 다른 클래스에서만 사용 가능 class Box { private int width; private int height; private int depth; protected int count; // 이 클래스와 이 클래스의 하위 클래스에서 사용 } class ProtectedDemo1 extends Box { // extends를 이용하여 Box 클래스의 하위 클래스로 생성 public static void main(String args[]) { Box mybox2 = new Box(); mybox2.count = 7; // 접근 가능

9 5.5. 허용된 접근 단계 접근 제한자 같은 패키지의 다른 Public OK Private NO Protected
클래스 자식클래스 다른 Public OK Private NO Protected default 여러 접근 제한자의 사용을 통해 같은 패키지 혹은 다른 패키지에 존재하는 클래스 혹은 상속받은 클래스에 대한 접근 권한을 제어 할 수 있음

10 5.6. 예 제 (1) - public class Fruit { int apple; int straw; int grapes;
int sum; Fruit(int apple, int straw, int grapes) { this.apple = apple ; this.straw = straw ; this.grapes = grapes ; } public int count() { sum = apple + straw + grapes; return sum; class BuyResult1 { public static void main(String[] args) { int total; Fruit f1 = new Fruit(30, 30, 30); total = f1.count(); System.out.println("객체 f1의 총 개수 = " + total); System.out.println("객체 f1의 apple 개수 = " + f1.apple); // 사과의 개수를 읽어 오기 위해 객체 속성 변수에 직접 접근 // 객체 속성 변수의 값을 직접 변경(f1.apple=90;)할 수도 있다 System.out.println("객체 f1의 straw 개수 = " + f1.straw); System.out.println("객체 f1의 grapes 개수 = " + f1.grapes); ※ BuyResult1.java 로 저장할것

11 5.6. 예 제(2) - private ※ BuyResult2.java 로 저장할것 class Fruit {
private int a; private int s; private int g; private int sum; Fruit(int apple, int straw, int grapes) { a = apple ; s = straw ; g = grapes ; this.count(); } private void count() { // count() 라는 메소드를 숨긴다 sum = a + s + g; public int gettotal() { // 모든 과일의 합은 이 메소드를 통해서만 접근 return sum; public int getapple() { // a 값에 대해 읽기만 허용하기 위한 메소드 return a; public int getstraw() { return s; public int getgrapes() { return g; class BuyResult2 { public static void main(String[] args) { int total; Fruit f1 = new Fruit(30, 30, 30); total = f1.gettotal(); // f1.count()를 사용하면 에러 발생 System.out.println("객체 f1의 총 개수 = " + total); System.out.println("객체 f1의 apple 개수 = " + f1.getapple()); // 메소드를 이용하여 사과의 개수를 읽어 오는것만 가능하다. // 만일 사용자가 "f1.a = 50;" 과 같은 문장으로 객체 속성 변수에 // 직접 접근하려 한다면 에러가 발생된다. System.out.println("객체 f1의 straw 개수 = " + f1.getstraw()); System.out.println("객체 f1의 grapes 개수 = " + f1.getgrapes()); ※ BuyResult2.java 로 저장할것

12 5.7. 접근제한자 최종 정리 접근 한정자의 사용 예 public class SamePackage {
public class Test1 { public int a; // public 멤버변수 선언 int b; // 접근한정자를 지정하지 않고 선언 private int c; // private 멤버변수 선언 public void method1() { } // public 메소드 선언 viod method2() { } // 접근한정자를 지정하지 않음 private void mothod3() { } // private 메소드 선언 } 같은 패키지 클래스에서의 사용 다른 패키지 클래스에서의 사용 public class SamePackage {   Test1 t1 = new Test1();   t1.a = 3; // 접근 가능   t1.b = 5; // 접근 가능   t1.c = 7; // 접근 불가능   t1.mothod1(); // 접근 가능   t1.mothod2(); // 접근 가능   t1.mothod3(); // 접근 불가능 } public class OtherPackage {   Test1 t2 = new Test1();   t2.a = 3; // 접근 가능   t2.b = 5; // 접근 불가능   t2.c = 7; // 접근 불가능   t2.mothod1(); // 접근 가능   t2.mothod2(); // 접근 불가능   t2.mothod3(); // 접근 불가능 }

13 ○ www.javastudy.co.kr : 자바스터디 네트워크
5.8. 참고 문헌 / 자료 ■ 참고 문헌 ■ 참고 사이트 ○ : 자바스터디 네트워크 제 목 저 자 출 판 사 참고 페이지 인정받는 IT 프로 Java 2 SCJP 김민수/변지은/김일태 공저 정보 문화사 205p – 217p Being Java 김충석 저 이한 출판 146p - 149p


Download ppt "5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진."

Similar presentations


Ads by Google