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

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
클래스 구성 요소 1개의 클래스는 최대 8개의 구성 요소를 가질 수 있다
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
10장 객체-지향 프로그래밍 II.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
윤성우의 열혈 C++ 프로그래밍 Chapter C++에서의 구조체 윤성우 저 열혈강의 C++ 프로그래밍 개정판.
Lesson 9. 예외처리.
Lesson 6. 형변환.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
5장. 참조 타입.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
자바 5.0 프로그래밍.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Java 9장. 인터페이스와 예외처리 public class SumTest {
Method & library.
자바 5.0 프로그래밍.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA V A W. 07 Sb.L.
JA A V W. 06.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
Java Programming Java Programming 3장 백석대학교 인터넷멀티미디어 LAB1111호.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
C# 07장. 객체 지향 개념.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
JSP Programming with a Workbook
MIDP 네트워크 프로그래밍 ps lab 김윤경.
서브클래스 조 병 규 한 국 교 통 대 학 교 SQ Lab..
발표자 : 이지연 Programming Systems Lab.
Java 5장. 객체지향 개념 public class SumTest {
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조
7 생성자 함수.
6 객체.
Presentation transcript:

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

목 차 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. 참 고 문 헌 / 자 료

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

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

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

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

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

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; // 접근 가능

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

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 로 저장할것

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 로 저장할것

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(); // 접근 불가능 }

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