본문 바로가기

개발/Java

접근제어 지시자(Access Control Sperifiers)

반응형

접근제어 지시자 표

지시자

 클래스 내부

 동일 패키지

 상속받은 클래스

 이외의 영역

 private

 O

 X

 X

 X

 default

 O

 O

 X

 X

 protected

 O

 O

 O

 X

 public

 O

 O

 O

 O


public > protected > default > private


1. 공개/비공개 메소드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package test;
 
class Student {
    
    private int age;
    private String name;
    
    // 공개메소드는 public!
    public void displayStudentInformation() {
        displayAge();
        displayName();
    }
    
    // 내부적으로 쓰이는 메소드는 private!
    private void displayAge() {
        System.out.println("age : " + age);
    }
    
    private void displayName() {
        System.out.println("name : " + name);
    }
    
}
cs


2. private / protected 상속

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package test;
 
class Car {
    public int a;  // 모두 접근 가능!
    private int b; // 무조건 자신(Car) 클래스에서만 접근이 가능함!
    protected int c; // 자신클래스와 자식클래스에서만 접근 가능! 
    
    public void method() {
        a = 100;
        b = 100;
        c = 100;
    }
}
 
class Bus extends Car {
    public void bus() {
        a = 200;
//        b = 300; error!
        c = 400;
    }
}
 
 
cs



3. public class

- public으로 정의된 class는 모든 패키지에서 접근 가능. 
- public으로 정의되지 않은 class는 다른 패키지에서 접근이 불가능함.
- public class는 xxx.java 에서 오직 하나만 정의할 수 있음


4. 포인터

1
2
3
4
5
6
7
8
9
class Test {
    public static void main(String[] args) {
        Student student1 = new Student(); 
        // studuent1은 인스턴스의 주소를 담고 있음! 포인터 변수!
        // 인스턴스의 주소를 담기 위해 4byte가 필요함(32bit 컴퓨터인경우)
        // new Student는 인스턴스!
    }
}
cs

반응형
LIST

'개발 > Java' 카테고리의 다른 글

객체지향프로그래밍의 이해와 자바의 이름규칙  (0) 2018.05.19
메모리 구조  (0) 2018.05.19
구조체란?  (0) 2018.05.19
17 abstract 클래스  (0) 2018.05.19
상속에 있어서의 인스턴스 참조관계 일반화 정리  (0) 2018.05.19