728x90
접근 제한자
클래스의 상호작용
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개만 존재해야 하는 경우에 적용
반응형
'IT' 카테고리의 다른 글
[Do it! 자바 프로그래밍 입문] 09 추상 클래스 (0) | 2022.05.31 |
---|---|
[Do it! 자바 프로그래밍 입문] 08 상속과 다형성 (0) | 2022.05.31 |
[Java 개발자가 되기 위한 첫걸음 2] 03 객체를 만드는 생성자 (0) | 2022.05.28 |
[Java 개발자가 되기 위한 첫걸음 2] 02 객체지향 프로그래밍과 클래스 (0) | 2022.05.27 |
[Java 개발자가 되기 위한 첫걸음 2] 01 메소드 (0) | 2022.05.27 |