본문 바로가기
프로그래밍 언어/자바의 정석 기초편

자바의 정석 기초편 ch7-17~20 제어자, static, final, abstract

by life grow 2022. 8. 25.

7-17 제어자

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

 

default: 아무것도 안붙이는 것

 

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

관례적으로 접근제어자를 제일 왼쪽에 쓴다.

 

7-18 static - 클래스의, 공통적인

static은 멤버변수나 메서드에 붙일 수 있다.

iv 앞에 static 붙으면 cv

 

static변수 : 간단 초기화

static 초기화 블럭: static변수의 복잡한 초기화 수행

static 메서드: iv 사용불가, instance메서드 사용 불가

왜냐하면 iv멤버들은 객체를 만들어야 사용가능하다.

 

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

final이 붙을 수 있는 대상은 전부 다.

제어자를 볼 때는 이 제어자를 사용할 수 있는 대상도 잘 봐야한다.

 

class 앞에 final이 붙으면 조상이 될 수 없다.

상속계층도에 제일 마지막이다. 그 아래 자기 자식이 없다.

예) String, Math

 

메서드 앞에 final이 붙으면 오버라이딩 불가(변경불가)

 

변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다. 

 

7-20 abstract - 추상의, 미완성의

abstract는 클래스하고 메서드 앞에만 붙을 수 있다.

abstract void move < 추상 메서드:{}몸통(구현부)이 없는 메서드. 미완성 메서드

abstract void move();

추상클래스: 추상메서드를 가지고 있는 클래스

 

추상 메서드는 선언부o, 구현부x

미완성 메서드를 가지고 있으니까 class도 미완성 클래스가 된다.

미완성 클래스: 미완성 설계도. 제품 생성 불가

객체 생성이 안된다.

설계도가 미완성인데 제품을 어떻게 만들까?

 

클래스 앞에 abstract 붙어 있으면 

아 이 클래스는 추상메서드를 가지고 있구나.

이 클래스를 사용하려면 상속을 통해서 

이 추상메서드를 완성해줘야되구나

 

언제 객체를 만들 수 있냐면?

추상클래스는 상속을 받아서 완전한 클래스를 만든 후에 객체 생성 가능.

완성된 설계도를 만들어야된다. <구상설계도라고도 한다.