[자바의 정석] 제어자, 캡슐화

2023. 9. 24. 22:35·📝 끄적끄적/🖥️ 자바의 정석

제어자(modifier)

영어로 따지면 형용사다.

클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여

 

접근 제어자

  • public, protected, (default), private
    • default는 아무것도 아님.

그 외

  • static, fina, abstract, synchronized, volatile, strictfp ….

하나의 대상에 여러 제어자를 같이 사용 가능하다.(접근 제어자는 하나만)

public class ModifierTest {
	public static final int WIDTH = 200;
}

 

static - 클래스의, 공통적인

 

final - 마지막의, 변경될 수 없는

final class FinalTest { //조상이 될 수 없는 클래스
	final int MAX_SIZE = 10; //값을 변경할 수 없는 멤버변수(상수)

	final void getMaxSize() { //오버라이딩할 수 없는 메서드(변경불가)
		final int LV = MAX_SIZE; //값을 변경할 수 없는 지역변수(상수)
		return MAX_SIZE;
	}
}

 

abstract - 추상의, 미완성의

추상화에서 배울 것이다.

abstract class AbstractTest { //추상 클래스(추상 메서드를 포함한 클래스)
	abstract void move(); //추상 메서드(구현부가 없는 메서드)
}

AbstractTest a = new AbstractTest(); //에러. 추상 클래스의 인스턴스 생성불가

추상 클래스는 미완성 설계도다.

즉 이걸로 객체를 만들 수 없다.

❓ 그럼 어떻게 만드냐

→ 추상클래스를 상속받아서 완전한 클래스를 만든 후에 객체를 생성해야 한다.

 

접근 제어자(access modifier)

  • private
    • 같은 클래스 내에서만 접근이 가능하다.
  • (default)
    • 같은 패키지 내에서만 접근이 가능하다.
  • protected
    • 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
  • public
    • 접근 제한이 전혀 없다.

접근 범위(넓 > 좁)

public > protected > (default) > private

 

클래스에는 public, (default)

멤버(멤버 변수, 메서드)에는 4개 다 사용가능

 

캡슐화

❓ 접근 제어자를 사용하는 이유

  • 외부로부터 데이터를 보호하기 위해서
  • 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서
public class Time {
	public int hour;
}

이렇게 멤버 변수를 public으로 선언하게 되면

`Time t = new Time();`
`t.hour = 23;`

이렇게 외부에서 데이터를 변경할 수 있기 때문에 아래처럼 사용하는것이다.

public class Time {
	private int hour;

	public void setHour(int hour) {
		this.hour = hour;
	}
}
저작자표시 비영리 (새창열림)

'📝 끄적끄적 > 🖥️ 자바의 정석' 카테고리의 다른 글

[자바의 정석] - 다형성  (0) 2023.09.25
[자바의 정석] - 추상 클래스와 추상메서드  (0) 2023.09.25
[자바의 정석] 참조변수의 형변환, instanceof 연산자  (0) 2023.09.24
[자바의 정석] 상속, 참조변수 super, 생성자 super()  (0) 2023.09.23
[자바의 정석] 생성자, 변수/멤버 변수의 초기화  (0) 2023.09.22
[자바의 정석] static 메서드와 인스턴스 메서드, 오버로딩  (0) 2023.09.21
'📝 끄적끄적/🖥️ 자바의 정석' 카테고리의 다른 글
  • [자바의 정석] - 추상 클래스와 추상메서드
  • [자바의 정석] 참조변수의 형변환, instanceof 연산자
  • [자바의 정석] 상속, 참조변수 super, 생성자 super()
  • [자바의 정석] 생성자, 변수/멤버 변수의 초기화
현주먹
현주먹
끄적끄적 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (162)
      • 👶🏻 CS (15)
        • Operating System (8)
        • Database (4)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • JPA (5)
        • Test Code (1)
        • Database (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (57)
        • 후기 및 회고 (5)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL
  • 인기 글

  • 태그

    항해99
    데브클럽
    로또 미션
    객체지향
    til
    99클럽
    개발자취업
    PostGreSQL함수
    C
    NextSTEP
    개발자멘토링
    ==와 equals()
    f-lab 후기
    자바의정석
    자바의신절판
    오블완
    코테스터디
    백준10250
    jsp
    F-Lab
    인프런 단어뒤집기
    에프랩
    백준
    에프랩 후기
    코딩테스트준비
    JPA
    티스토리챌린지
    TDD 클린 코드 with Java
    오라클
    인프런 특정문자뒤집기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
현주먹
[자바의 정석] 제어자, 캡슐화
상단으로

티스토리툴바