Post

Class_Access Modifier

✅ access modifier 접근 제어자, 정보 은닉화

필드 앞에 붙여 이 데이터에 대한 접근성을 제한한다.
이로써 정보를 감추기도 한다. ➡️ 정보 은닉화
메소드 앞에는 붙이지 않는다.

⭐️ 캡슐화 encapsulation

  • 사용자가 굳이? 볼 필요 없는 부분들을 감싸서 더 편리하게 사용할 수 있게 하기 위함
  • 클래스에 선언된 데이터를 보호하기 위해서 🟰 encapsulation

✔️ public

다른 패키지에서도 접근 가능 동일 패키지 또는 자손 클래스 안에서 접근 가능
동일 패키지 안에서 접근 가능
해당 클래스 안에서 접근 가능

✔️ protected

동일 패키지 또는 자손 클래스 안에서 접근 가능 동일 패키지 안에서 접근 가능
해당 클래스 안에서 접근 가능

✔️ default

동일 패키지 안에서 접근 가능 해당 클래스 안에서 접근 가능

✔️ private

해당 클래스 안에서 접근 가능

✔️ final

값을 변경할 수 없는 상수가 된다.
오버라이딩 ❌
클래스에 사용되면 자신을 확장하는 자식 클래스 정의 ❌

✅ JAVA final keyword

☑️ final field

final이 field 앞에 붙으면 값을 바꿀 수 없는 field가 되었음.
그래서 필드 선언할 때 생성자에서 초기화해야 하고, 이 값은 평생 가는 값이다.
수정이 불가능하기 때문이다.

☑️ final method

final로 메소드 오버라이딩 막기
메소드 앞에 final을 추가하면 오버라이딩 불가

1
2
3
4
5
6
public final class Animal{
    //method 앞에 final 붙이기
    public final void eat(String food)
}
//이렇게 final로 함수 만들면 Animal.eat()함수를 override하던 함수들에서
//💥 Make Animal.eat() not final이라고 뜬다.

☑️ final instance

다른 값을 넣는 것은 불가하다.
field는 바꿀 수 있음 (주소는 못 바꾸지만 인테리어는 바꿀 수 있는 것처럼)

☑️ final class

final로 클래스 상속 막기
final을 추가하면 이 클래스는 부모가 될 수 없음.

1
2
3
4
5
6
public final class Animal{

}
//이렇게 final로 만들면 animal클라스를  inherit하던 함수들 빨간줄
//💥 Cannot inherit from final
//make animal not final
This post is licensed under CC BY 4.0 by the author.