JAVA 수식자 정리

heitz·2022년 3월 4일
0

JAVA 공부

목록 보기
2/4

수식자란?
클래스, 변수, 메서드 등에 효과나 제약을 부여하는 수단

1) 접근제한자

public: 접근제한이 없음. 모든 객체에서 접근 가능!
protected: 같은 패키지(폴더) 안의 클래스 또는 현재 클래스를 상속받은 클래스에서 접근 가능.
default: 같은 패키지(폴더)에 있는 클래스들만 접근 가능. 접근제한자를 명시하지 않으면 갖게되는 기본 값.
private: 같은 클래스 내 멤버 함수 또는 멤버 변수 만이 접근 가능.

2) 기타 수식자

static: 클래스가 인스턴스화되지 않아도 접근(호출) 가능. static 선언된 변수는 클래스 변수/static 변수라고 불리고 static 선언된 메소드는 클래스 메소드/static 메소드라고 불린다.
final: final 선언된 클래스는 더이상 상속(확장)될 수 없다. 메소드의 경우 오버라이드(override) 불가하고, 변수는 final로 선언하면 상수가 된다. 이때 상수 선언의 경우 관례적으로 static final로 선언한다.
abstract: abstract 클래스/메소드를 선언할 때 사용한다.
interface: interface를 선언할 때 사용된다.

* Abstract 클래스와 Interface

  • abstract 클래스/메소드를 사용하는 이유는 https://limkydev.tistory.com/188 을 참고하자. 간단히 말하자면, 내용물이 비슷한 클래스들의 규격을 맞추기 위해 각 클래스를 선언할 때 abstract 클래스를 상속받아 사용한다. abstract 클래스는 단독으로 객체를 생성할 수 없고 오직 실체 클래스에 상속되기위해 존재한다.

  • interface는 class와 비슷하게 생겼지만 class는 아니다. interface의 상속은 interface끼리 가능하고, class와 달리 다중상속도 가능하다. 하지만 class에서도 implements 키워드를 이용하면 interface를 상속받을 수 있다. 그리고 implements를 사용해 상속받는 경우에도 다중상속이 가능하다. interface를 사용하는 이유는 https://limkydev.tistory.com/197 을 참고하자. 요약하자면 interface는 "극단적으로 동일한 목적 하에 동일한 기능을 보장"하기 위해 사용된다.

  • abstract 클래스와 interface의 차이는 본질적으로 "사용목적"에 있다. 자세한건 잘 정리된 블로그 https://myjamong.tistory.com/150 참조!

profile
For Fun

0개의 댓글