반응형
SMALL
[1] 제어자 > 접근제어 지시자
(1) 접근제어 지시자 accesss modifier
- 클래스 외부에서 멤버변수, 메서드, 생성자를 사용할수 있는 권한을 가지고 있는지 지정하는 키워드
- 한번에 4개중에 1개만 사용할수 있다
public | 모든 접근 허가 |
protected | 같은 패키지 + 하위 클래스 접근 허가 |
default | 같은 패키지 접근허가 접근제어자가 지정되어있지 않다면 생략되어있는 형태이다 |
private | 같은 클래스 접근허가 메모리에 할당 |
(2) 접근제어 지시자 활용방법
- 권한제어가 필요한 항목(폼 형태 , 헤더, 바디, 풋터 , 개인정보) 과 공개가 가능한 함수 구현한다
public class makeform {
StringBuffer buffer = new StringBuffer();
//출력할 폼 형태를 만든다
private String line = "===========================================\n";
private String title = " 이름\t 주소 \t\t 전화번호 \n";
// 헤더 : 폼은 변경이 불가능하게 권한을 제한한다
private void makeHeader() {
buffer.append(line);
buffer.append(title);
buffer.append(line);
}
// 바디 : 폼 안에 입력할 개인정보도 접근 불가능하게 권한을 제한한다
private void makeBody()
{
buffer.append("이름A \t");
buffer.append("주소A \t");
buffer.append("010-1111-1111\n");
buffer.append("이름B \t");
buffer.append("주소B \t");
buffer.append("010-2222-2222\n");
}
// 풋터 : 폼은 변경이 불가능하게 권한을 제한한다
private void makeFooter() {
buffer.append(line);
}
// 출력하라는 함수는 권한 제어할 필요는 없으므로 전체공개한다
public String showForm() {
makeHeader();
makeBody();
makeFooter();
return buffer.toString();
}
}
본 main 함수에서 인스턴스하여 객체를 생성하고 , 인스턴스에 함수를 호출하여 변수를 출력한다
public class Service {
public static void main(String[] args) {
//인스턴스
makeform newForm = new makeform();
//인스턴스의 함수를 호출한 변수 선언
String builder = newForm.showForm();
System.out.println(builder);
}
}
[2] 제어자 > 그 외 지시자
(1) static
- static 멤버변수
- static 메서드
- static 초기화 블럭
(2) final
- final 클래스 : 상속관계가 불가하다 (확장x)
- final 메서드 : @overriding 불가하다
- final 멤버변수
- final 지역변수
(3) abstract
- abstract 추상클래스
- abstract 추상메서드
[3] 캡슐화
(1) 접근제어자 목적
- 외부로부터 클래스 내부에 선언된 데이터 보호 하기 위해서
- 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서
- 예) 데이터가 유효한 값을 유지하게 보호한다
- 예)비밀번호 데이터를 외부에서 변경하지 못하도록 외부 접근 제한을 한다
(2) 캡슐화 encapsulation
- 꼭 필요한 정보와 기능만 외부에 오픈한다
- 외부에서 접근할 필요가 없는 멤버들을 private로 지정하여 접근제한을 한다
- 멤버변수와 메서드를 숨기고 외부에는 통합된 인터페이스만 제공하여 오류방지와 일관된 기능을 제공한다
- 각각의 메서드, 멤버변수를 접근하여 발생하는 오류를 최소화한다
- 외부에서 접근 가능한 최소한의 정보를 오픈함하여 , 객체 오류 방지하여 클라이언트 객체가 효율적으로 활용할수 있도록 돕는다
- 점수가 public 이라면 얼마든지 접근하여 점수를 바꿀수 있다. 점수는 private , 조회는 public 이런식으로 객체를 나눠 협력한다
(3) get() set() 메서드
- get 겟터 메서드 , set 셋터 메서드
- private 멤버변수를 접근할수 없도록 숨기고 대신 접근 및 수정이 가능한 get멤버변수 , set멤버변수를 만든다
- get() : 멤버변수의 값을 반환한다
- set() : 매개변수에 지정된 값이 조건에 맞다면 멤버변수의 값을 변경한다
package 패키지;
public class score {
//숨겨야하는 멤버변수
private static int serialNum = 1000;
private int employeeId;
private String employeeName;
private String department
//캡슐화 된 멤버변수 (읽기만가능)
public static int getSerialNum() {
return serialNum;
}
//캡슐화 된 멤버변수 (읽기, 수정 가능)
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
//캡슐화 된 멤버변수 (읽기, 수정 가능)
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
//캡슐화 된 멤버변수 (읽기, 수정 가능)
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
반응형
LIST
'🌈 백엔드 > 객체 지향' 카테고리의 다른 글
JAVA_객체지향_디자인 > 싱글톤 패턴 (0) | 2023.06.03 |
---|---|
JAVA_객체지향_this (0) | 2023.06.03 |
JAVA_객체지향_생성자 (0) | 2023.06.03 |
JAVA_객체지향_인스턴스 & static 클래스변수 (0) | 2023.06.03 |
JAVA_객체지향_함수 & 메서드 (0) | 2023.06.03 |