본문 바로가기

공부/JAVA

[JAVA STUDY] DAY5. Singleton / final / Access Modifier

728x90

DAY5. 키워드

  1. Singleton
  2. final
  3. Access Modifier

[equals와 ==연산자]

  • equals > 값 비교
  • == 연산자 > 주소 비교

[단축키]

  • ctrl + shift + O > 자동 import

1-1. 싱글톤

  • 하나의 애플리케이션 내에서 단 하나만 생성되는 객체

1-2. 싱글톤 생성

  1. 외부에서 new 연산자로 생성자를 호출 할 수 없도록 private 접근 제한자를 생성자 앞에 붙임
  2. 클래스 자신의 타입으로 정적 필드 선언
    1. 자신의 객체를 생성해 초기화
    2. pirvate접근 제한자를 붙여 외부에서 필드 값 변경 불가 하도록 함
  3. 외부에서 호출 할 수 있는 정적 메소드인 getInstance()선언
package com.kosta.day05;

class Singleton{

    /*2*/static Singleton aa;
    int score;
    static int score2;

    /*1*/private Singleton(){
        System.out.println("기본 생성자");
    }

    /*3*/static Singleton getInstance() {
        if(aa==null) aa = new Singleton();
        return aa;
    }
}

public class SingletonTest {

    /* 컴파일 에러
    Singleton s1 = new Singleton();
    Singleton s2 = new Singleton();
    */
    
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();

        //s1과 s2의 주소는 같다.
        System.out.println(s1);
        System.out.println(s2);
    }
}

2. final

  • 최종적인 값을 갖고 있는 필드로 값을 변경 할 수 없다.
  • final 필드의 딱 한번의 초기값 지정 방법
    • 필드 선언 시
    • 생성자
public class Person {
    final String nation = "한국";
    final String ssn;
    String name;
    
    public Person(String ssn, String name) {
        this.ssn = ssn;
        this.name = name;
    }
}

3. Access Modifier

  • 클래스 및 클래스의 구성 멤버에 대한 접근을 제한하는 역할
접근 제한 적용 대상 접근할 수 없는 클래스
public 클래스, 필드, 생성자, 메소드 없음
protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스
default 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스
private 필드, 생성자, 메소드 모든 외부 클래스

 

728x90
반응형