[Java] 자바 #17, 클래스(Class)와 접근제한자.
- 프로그래밍 언어/Java
- 2019. 2. 11. 22:22
Class
- 자바에서 제공하는 객체의 단위가 되는 것.
- 클래스를 통해서 설계도를 작성하고 메모리에 클래스를 통해 생성한 객체가 로드된다.!!
- String, BufferedReader, Calendar 등과 같은 것도 클래스로 작성이 되어 있고, jdk에 포함되어 메모리에 올려져 있는 것임.
클래스명 규칙
1. 실제 파일명과 클래스명은 동일해야한다.
2. 클래스명은 대문자로 시작해야 한다.
- 파스칼 표기법(MyHome : 단어마다 대문자로 시작.)을 사용
- 필수(X) -> 권장(O) -> 필수(O)
3. 자바파일 1개당 클래스 1개 선언
- 필수는 아니지만 권장한다.
- 소스관리가 쉬워진다.
- 클래스 검색이 쉽다.
- 한개의 자바파일에 여러개의 클래스를 선언하는 경우
a. 모든 클래스중에 public 키워드를 가지는 클래스는 유일하다.
b. public 키워드를 가진 클래스가 대표 클래스가 된다. 즉 파일명이 된다.
1 2 3 4 | public class Dish{ String color; String name; } | cs |
>> 이런것도 클래스임.
Dish cu = new Dish();
cu.name="머그컵"; //객체의 멤버변수를 초기화
System.out.println(cu.name); // 출력 >> 머그컵
ex) 컵이 다량으로 필요 -> 100개 생성
Dish[] list = new Dish[100];
for(int i=0; i<list.length; i++) {
list[i]=new Dish();
list[i].name="종이컵";
list[i].color="흰색";
}
Dish cu << 이부분은 변수를 선언하는 부분입니다.
= << 대입연산자이고,
new Dish() ; << Class로 작성된 객체를 변수에 대입하여 메모리에 로드하는 과정입니다. new 키워드로 객체를 생성하는 것을 객체생성, 객체를 생성한다 라고 부릅니다.
클래스와 객체
클래스와 객체의 차이는 제조문서와 제품의 차이입니다. 제조문서는 제품을 만드는 비법이 적혀져 있는 문서입니다. 이 문서만 있으면 제품을 100개든 1000개든 무한히 만들어 낼 수 있습니다. 이렇게 만들어진 제품이 객체이고 제조문서를 클래스에 비유하겠습니다.
하지만 이 제조문서는 누구나 볼 수 없습니다. 어떤 것은 아주 비밀스럽게 제조문서를 만든 사람만 볼수있게하고, 어떤건 그사람의 자식만 볼 수 있고, 어떤것은 그 누구도 봐도 상관없는 내용이 담겨 있을 수 있습니다. 접근제한자는 여기서 출발합니다.
접근제한자
- 갑형, 참조형 등 변수를 생성할 수 있는 type에게 붙이는 접근범위 딱지같은 것.
- private, default, protected, public 4가지의 접근 제한자가 있음. 각각 키워마다 범위가 정해져 있다.
private : 선언된 클래스 내에서만 사용 가능.
default : 선언된 클래스가 포함된 패키지 안에서만 사용 가능
protected : 선언된 클래스가 포함된 패키지 안! 혹은 클래스를 상속받는 클래스들에서까지도 사용 가능.
public : 그 어느 곳에서도 사용 가능.
접근지정자 사용시 가이드(권장 사항)
1. 클래스의 멤버변수는 무조건 private으로 지정한다.
2. public 메소드를 통해서 접근
a. 쓰기 -> Setter메소드
b. 읽기 -> Getter메소드
c. 명명법
Setter -> setXXX -> set멤버변수명
Getter -> getXXX -> get멤버변수명
d. Getter(O), Setter(X) -> Read Only(읽기전용)
e. Getter(X), Setter(O) -> Write Only(쓰기전용)
f. 가상멤버
3. 메소드도 무조건 private으로 지정한다.
a. 외부용 : public
b. 내부용 : private
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #19, workspace, project, package, class (0) | 2019.02.15 |
---|---|
[Java] 자바 #18, 정적 멤버 static (정적 키워드) (1) | 2019.02.13 |
[Java] 자바 # 16, Array(배열) [feat.향상된 for문] (0) | 2019.02.11 |
[Java] 자바 #15 String과 문자열 함수(replace, substring, charAt 등등..) (0) | 2019.02.10 |
[Java] 자바 #14 반복문 (2) -while, do-while문 (0) | 2019.02.10 |