일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 로켓펀치 #취준컴퍼니 #취업 #일상 #취준생
- 예외클래스
- til
- 다중 catch 블록
- 개발자취업
- 예외 처리
- try-catch-finally 블록
- 99클럽
- 예외
- 코딩테스트준비
- 항해99
- 실행 예외
- 일반 예외
- throws 키워드
- Today
- Total
innn
제어자(public, protected, (default), private), static, final, abstract 본문
제어자(public, protected, (default), private), static, final, abstract
33삼 2022. 7. 10. 18:21제어자 modifier
- 클래스와 클래스의 멤버(멤버변수, 메소드)에 부가적인 의미 부여
마치 명사를 꾸며주는 형용사와 같은 역할(형용사 + 명사)
접근 제어자 public, protected, (default), private
그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp
static
대상은 두 가지 : 1. 멤버변수 2. 메소드
스태틱이 붙으면 객체 생성없이 사용가능해진다. 그래서 클래스 변수가됨.
final - 마지막의, 변경될 수 없는
대상은 네가지 : 클래스 메소드 멤버변수 지역변수
1. 클래스
변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
2. 메소드
변경될 수 없는 메소드. final로 지정된 메소드는 오버라이딩을 통해 재정의 될 수 없다.
3. 멤버변수
4. 지역변수
변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다.
클래스 앞에 붙으면 상속 불가능한 클래스가 됨.
메소드 앞에 붙으면 변경, 오버라이딩할 수 없는 메소드가 됨
변수 앞에 붙으면 상수가 됨.
abstract - 추상의, 미완성의
대상은 두가지 : 클래스 메소드
추상클래스는 바로 객체 생성불가능함
왜냐? 미완성 설계도 상태이기 때문. 그래서 제품(인스턴스=객체) 생산 불가.
추상클래스는 상속을 받아서 완전한 클래스를 만든 후에 객체 생성 가능.
(미완성 설계도) (완성된 설계도)
protected 접근 제한자.
protected 접근 제한자는 상속과 관련있다.
일단, protected는 public과 default 접근 제한의 중간쯤 해당한다. 같은 패키지에서는 default와 같이 접근 제한이 없지만, 다른 패키지에서는 자식 클래스만 접근을 허용한다.
----------------------------------------------- pakage1 -------------------------------------------------------------------------------------------
public class A {
protected 멤버
}
class B {
}
----------------------------------------------- pakage2 -------------------------------------------------------------------------------------------
class C {
// 다른 패키지이므로. 클래스 A의 protected 멤버가 올 수 없음
}
class D extends A {
// 다른 패키지임에도. 클래스 A의 protected 멤버가 올 수 있음. 왜냐? 상속 받았으니까.
}
protected는 필드와 생성자,
'JAVA > 자바의 정석 기초편_남궁성(2020)' 카테고리의 다른 글
다형성 (0) | 2022.07.17 |
---|---|
import문 (0) | 2022.07.10 |
패키지(pakage) (0) | 2022.07.10 |
참조변수 super, 생성자 super() (0) | 2022.07.10 |
오버라이딩Overriding (오버로딩이랑 완전 다른 거임) (0) | 2022.07.06 |