접근 제어자
✅ 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여
✓ 접근 제어자 : public, protected, default, private
✓ 그 외 제어자 : static, final, abstract
※ 주의 : 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용
( 보통 public 과 private 가 많이 사용됨 )
1. 접근 제어자를 이용한 캡슐화 (은닉성)
- 접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해서 사용
- 유효한 값을 유지하도록, 함부로 변경하지 못하도록 접근을 제한하는 것이 필요
2. 생성자의 접근 제어자
- 생성자에 접근 제어자를 사용함으로 인스턴스의 생성을 제한
- 일반적으로 생성자의 접근 제어자는 클래스의 접근 제어자와 일치
Getter & Setter
✅ 외부에서 필드에 직접 접근하는 것을 막기 위해 필드에 private, default 등의 접근 제어자를 사용할 수 있음
➡️ 보호된 객체에 접근해서 값을 가져오고 들여보내기 위해 안정된 방법인 Getter 와 Setter 사용
Getter
외부에서 객체의 private 한 필드를 읽을 필요가 있을 때 Getter 메서드를 사용
private double speed; // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태
메서드 이름의 규칙은 : get + 필드 이름(첫 글자 대문자)
사용하는 방법은 인스턴스 메서드 호출과 동일
public String getModel() {
return model;
}
public String getColor() {
return color;
}
public double getPrice() {
return price;
}
Setter
외부에서 객체의 private 한 필드를 저장/수정할 필요가 있을 때 Setter 메서드를 사용
private double speed; // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태
메서드 이름의 규칙은 : set + 필드 이름(첫 글자 대문자)
사용하는 방법은 인스턴스 메서드 호출과 동일
public void setModel(String model) {
this.model = model;
}
public void setColor(String color) {
this.color = color;
}
public void setPrice(double price) {
this.price = price;
}
제어자의 조합
package 와 import
package
package oop.main;
public class Main {
public static void main(String[] args) {
oop.pk1.Car car = new oop.pk1.Car();
car.horn(); // pk1 빵빵
oop.pk2.Car car2 = new oop.pk2.Car();
car2.horn(); // pk2 빵빵
}
}
opp.pk1.Car 처럼 패키지의 경로를 적어주면서 같은 Car 이름의 클래스를 다른 파일로부터 불러오면서 구분
import
package oop.main;
import oop.pk1.Car;
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.horn(); // pk1 빵빵
oop.pk2.Car car2 = new oop.pk2.Car();
car2.horn(); // pk2 빵빵
}
}
서로 다른 패키지에 있는 같은 이름의 클래스를 동시에 사용하려면 해당 클래스에 패키지 명을 전부 명시
'내배캠_Java 6기 > Java 문법 종합반' 카테고리의 다른 글
20240812_캠프 5주차 1일_자바 상속의 모든 것 (0) | 2024.08.12 |
---|---|
20240809_TIL_캠프 4주차 5일_생성자와 this (0) | 2024.08.12 |
20240808_TIL_캠프 4주차 5일_인스턴스 멤버와 클래스 멤버 (0) | 2024.08.09 |
20240809_TIL_캠프 4주차 5일_필드와 메서드 (0) | 2024.08.09 |
20240809_TIL_캠프 4주차 5일_자바의 객체지향 프로그래밍과 클래스 설계 (1) | 2024.08.09 |