티스토리 뷰

목차



    반응형
    접근 제한자
    클래스의 상호작용
    Singleton Pattern

    접근 제한자

    접근 제한자를 활용하여 클래스의 변수와 메소드를 보호

    접근 제한자 접근 범위
    public 외부 클래스 어디서나
    protected 상속 관계의 클래스(부모 / 자식 관계)
    private 같은 클래스 내부
    (default) 같은 패키지 내부

    캡슐화

    사용자에게 필요한 부분만 공개하는 것

    private은 클래스 밖에서의 접근을 막는다.
    class Student {
        private int number;
        int score;
        String name;
    }
    
    Student s = new Student();
    s.number = 1001; // Error, private 변수는 접근 불가
    s.score = 99; // 99 
    s.name = "Java"; // Java

    private 변수를 외부에서 사용하려면 private 변수에 접근하는 public 메소드를 제공해야 한다.

    //get, set 메소드를 직접 제공
    
    class Student {
        private int number;
        
        public int getNumber() {
            return number;
        }
        
        public void setNumber(int number) {
            this.number = number;
        }
    }

    접근 제한자를 사용하는 이유

    잘못된 값 설정을 막을 수 있다.

    class Student {
        private int number;
        
        public void setNumber(int number) {
            if( number < 1000 || number > 9999 ) {
                System.out.println("올바른 학번이 아닙니다.");
                return;
            }
            this.number = number;
        }
    }

    클래스 내부에서만 사용할 변수나 메소드는 private로 선언

     

    접근 제한자가 없는 경우

    default 접근 제한이며 같은 패키지 내에서만 접근 가능

     

    public class

    class는 기본적으로 default 속성

    public class는 해당 자바 파일의 대표 클래스이며 파일명과 클래스 이름이 일치해야 한다.

     

    클래스의 상호작용

    객체지향 프로그래밍

    클래스를 속성과 기능으로 설계하고 객체들의 상호작용으로 프로그램을 작성하는 것

     

    자바 프로그래밍

    자바는 객체지향 프로그래밍 언어이며 모든 것은 클래스 단위로 이루어진다.

     

    Singleton Pattern

    프로그램 전반에 이용될 인스턴스를 단 하나만 생성하는 디자인 패턴

    ex) 교내 학생들을 관리하는 프로그램, 학생은 여러 명이지만 학교는 단 하나

     

    1. private 생성자 만들기

    class School {
        // 외부에서의 객체 생성을 금지함
        private School() {};
    }

    2. 클래스 안에 static 인스턴스 만들기

    class School {
        // 프로그램 전체에서 사용할 유일한 인스턴스
        private static School instance;
    }

    3. 객체를 얻을 수 있는 public 메소드 제공

    class School {
        // 외부에서의 객체 생성을 금지함
        public static School getInstance() {
            if(instance == null)
                instance = new School();
            return instance;
        }
    }

    4. 싱글턴 객체 사용

    ...
    School mySchool = School.getInstance();
    
    mySchool.addStudent("Java");
    ...

    Singleton Pattern

    디자인 패턴은 상황에 맞는 적용법일 뿐 고유한 장/단점은 없다.

    인스턴스가 프로그램에 1개만 존재해야 하는 경우에 적용

    반응형