2024. 10. 18. 15:39ㆍjava
접근 제한자(Access Modifier):
접근을 제한하기 위해 사용되며, 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 말함
클래스 내부에서 필드를 선언할 때는 반드시 접근제한자를 붙일것
- public: 어디서든(같은패키지, 다른 패키지, 클래스 내/외부 포함 전부) 접근가능
- protected: 같은 패키지라면 무조건 접근 가능, 다른 패키지라면 상속구조인 클래스에서만 접근 가능
- default: 같은 패키지에 소속된 클래스에서만 사용
- private:개인적인 것이라 외부에서 사용 불가, 오직 해당 클래스 안에서만 접근가능

| 접근 제한 | 적용 대상 | 접근할 수 없는 클래스 |
| public | 클래스, 필드, 생성자, 메소드 | 없음 |
| protected | 필드, 생성자, 메소드 | 자식 클래스가 아닌 다른 패키지에 소속된 클래스 |
| default | 클래스, 필드, 생성자, 메소드 | 다른 패키지에 소속된 클래스 |
| private | 필드, 생성자, 메소드 | 모든 외부 클래스 |
접근제한자 사용
- 클래스 : public, default
- 생성자 : public, protected, default, private
- 멤버변수 : public, protected, default, private
- 멤버메소드 : public, protected, default, private
- 지역변수 : 접근제한자 사용 불허
클래스: 각 객체들의 정보 (속성, 행위)들을 담아내는 그릇 또는 틀 또는 설계도 또는 명세
클래스 : Vo(Value Object)
// 필드부, 생성자부, 메소드부
- 필드(filed)부
객체가 가질 수 있는 속성으로 정보를 담는 부분
[ 표현법 ]
멤버변수접근제한자 자료형 필드식별자;
private int price;
private int price;
private String brand;
private String caseColor;
- 생성자(Constructor)부
식별자가 클래스식별자와 동일하고 반환형이 존재하지 않는 메소드
- 기술적관점: 객체를 생성해주기 위해 생성
- 개념적관점: 객체를 생성하는것 뿐만 아니라 유효성이 있는 객체로 만들어주기 위해 생성
[ 표현법 ]
public 클래스이름(매개변수(생략가능)){
해당 생성자를 통해서 객체 생성 시 실행하고자 하는 코드;
}
\
[ 생성자의 종류 ]
- 매개변수가 없는 생성자 → 기본생성자
- 단지 객체를 생성할 목적으로 사용 -> heap 영역에 할당할 때 공간을 확보하는 문법
- 클래스 내에 생성자를 하나도 작성하지 않으면 컴파일러가 기본생성자를 자동으로 만들어줌
- 기본 생성자는 생략해도 오류가 나지 않으나 확인을 위해 "항상" 작성하는 버릇을 들이는 것이 좋음
public Member() {
// 기본생성자(매개변수가 없음)
System.out.println("회원가입 성공!");
}
- 매개변수가 존재하는 생성자
public Member(String userId, String userPwd, String userName, String PhoneNumber, String phoneNumber) {
this.userId = userId;
this.userPwd = userPwd;
this.userName = userName;
this.phoneNumber = phoneNumber;
}
→ 차이점: 필드에 값을 대입할 수 있느냐 없느냐 차이
[참고사항]
- 반드시 생성자의 이름을 클래스의 이름과 동일할게 작성해야함 (대/소문자 주의)
- 반환형이 존재해서는 안됨!(반환형 적으면 메소드로 판단함)
- 매개변수 생성자를 명시적으로 작성하면 기본생성자를 만들어주지 않음
→ 꼭 기본생성자를 만드는 버릇을 들이기 - 생성자를 여러 개 생성이 가능하지만 매개변수가 중복되면 안됨! → 오버로딩
- 메소드(Method)부
기능을 구현하는 부분(method)
[ 표현법 ]
접근제한자 (예약어) 반환형 메소드식별자(매개변수) {
메소드 호출 시 실행할 코드;
}
- 접근제한자 : 호출할 수 있는 범위를 제한
- 반환형: void -> 돌려줄 값이 없음 / 메소드 결과값의 자료형을 지정
- 매개변수 : 메소드 호출 시 전달값을 받아주는 변수 (메소드 범위에서만 사용이 가능. 생략 가능)
private void method1() {
System.out.println("하하호호");
}
캡슐화 information hiding(정보은닉)
은닉화 전제로 하며 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게는 내부적인 접근을 허용하지 않는 대신에 사용의 편의성을 제공함
[캡슐화의 장점]
- 데이터 보호: 은닉화를 통해 데이터의 접근을 제어
- 유지 보수
- 사용자 편의성
[캡슐화 방법]
- 값을 숨긴다: 필드의 접근제한자를 public 대신 private으로 선언
- 메소드를 통해 필드에 접근할 수 있도록 진행 getter() / setter()생성
setter(): 데이터를 기록 및 수정하는 기능의 메소드
[setter 생성 규칙]
- 외부에서 접근이 가능해야 하기 때문에 접근제한자 public을 이용
- set 필드명으로 식별자를 작성하며 낙타봉표기법(camelCase) 사용용
- (예외상황) Vo클래스에서 모든 필드에 대해 전부 다 setter 메소드 만들어주기
public void setPrice(int price){
if(price < 1) {
System.out.println("정상적이지 않은 값을 입력했습니다.");
} else {
this.price = price;
}
}
public void setBrand(String brand) {
this.brand = brand;
}
public void setCasecolor(String caseColor){
this.caseColor = caseColor;
}
getter(): 데이터를 반환해주는 기능의 메소드
[getter 생성 규칙]
- 외부에서 접근이 가능해야 하기 때문에 접근제한자 public을 이용
- get 필드명으로 식별자를 작성하며 낙타봉표기법(camelCase) 사용용
- 모든 필드에 대해 전부 다 반드시 getter 메소드 만들어주기
public int getPrice() {
return price ;
}
public String getBrand() {
return brand;
}
public String getCaseColor() {
return caseColor;
}
public String getProductName() {
return productName;
}
public String intformation() {
String info = productName + "은" + brand + " 사에서 제조하였고, " + "가격은 " + price + "원 이며, "
+ caseColor + "색 입니다.";
return info;
}
'java' 카테고리의 다른 글
| 오버로딩(overloading), 오버라이딩(overriding), 상속 (1) | 2024.10.18 |
|---|---|
| 클래스변수 & 인스턴스변수 & 지역변수 (1) | 2024.10.18 |
| 배열(array), 인덱스 (index) (3) | 2024.10.18 |
| 반복문_for문, while문, do-while문, break, continue (3) | 2024.10.18 |
| 조건문 _ if, if-else, switch, (1) | 2024.10.18 |