💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다.
해당 장은 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 설명한다. 예를 들어 this, abstract 와 같은 키워드이다. 이미 충분히 알고 있는 내용이기에 간단하게 정리만 하고 넘어가려 한다.
☁️ abstract - 추상 메서드와 추상 클래스
abstract 키워드를 사용하여 추상 클래스와 메서드를 만들수 있다.
public abstract class AbstractClass {
public abstract void method();
}
abstract 로 선언된 추상 메서드를 하나라도 가지고 있는 클래스는 추상 클래스여야만 한다.
추상 클래스를 확장하는 클래스는 추상 메서드를 무조건 구현해야하는 건 아니다. 하지만 위의 규칙처럼 추상 메서드를 구현하지 않았다는 것은 추상 메서드를 가지고 있다는 것이기에, 추상 클래스로 선언되어야 한다.
추상 메서드는 왜 생겼을까? 추상 클래스 본인이 구현을 하기에는 애매한 기능인데 확장하는 클래스는 반드시 구현하면 좋겠는 기능을 넣기 위해서 일 것 같다.
☁️ final 키워드
final은 총 3가지 타겟에 사용할 수 있다. 클래스, 메서드와 변수이다.
클래스를 final로 선언하는 경우 해당 클래스를 확장하지 못하게 제한한다.
메서드를 final로 선언하는 경우 해당 메서드는 재정의가 불가능하다.
변수를 final로 선언하는 경우 해당 변수는 변경이 불가능하다.
public final class FinalClass {
private final int finalInteger;
public final void finalMethod() { // 해당 경우에는 클래스가 final이라 의미 없음
}
}
☁️ package 키워드
패키지를 정의하는 키워드이다.
패키지를 왜 정의할까? 관심사에 따라 클래스를 분리하기 위해서이다.
병원과 은행 도메인에 Customer라는 클래스를 추가하여 사용하려고 한다. 같은 패키지에서 각각의 Customer 클래스를 선언하는 경우 클래스의 이름 충돌이 발생한다.
따라서 패키지로 관심사를 분리하여 각각의 Customer를 선언함으로써 클래스 이름의 충돌을 피하고 각 도메인에 맞는 독립적인 클래스로 사용하기 위함이다.
☁️ interface, Implements 키워드
interface는 implements 키워드를 통해 구현할 수 있다. interface는 ~~할수 있는 형태로 네이밍하는 것이 좋다. ex. Comaprable, Cloneable …
public interface TestInterface {
int a = 1;
void test();
}
인터페이스에서 변수를 위 처럼 선언한다면 자동으로 public static final으로 선언된다. 메서드는 public abstract 로 선언된다. 따라서 위의 코드는 아래와 같다.
public interface TestInterface {
public static final int a = 1;
public abstract test();
}
☁️ this, super
this는 객체의 멤버 메서드에서 자기 자신을 지칭할 때 사용하는 키워드이다.
super는 바로 위 상위 클래스의 인스턴스를 지칭할 떼 사용하는 키워드이다.
'JAVA > 자바 객체지향의 원리와 이해' 카테고리의 다른 글
06. 스프링이 사랑한 디자인 패턴 (0) | 2024.01.20 |
---|---|
05. 객체 지향 설계 5원칙 - SOLID (0) | 2024.01.18 |
03. 자바와 객체지향 (0) | 2024.01.17 |
02. 자바의 절차적/구조적 프로그래밍 - JVM의 메모리 (0) | 2024.01.17 |
01. 사람을 사랑한 기술 - 기술의 발전 (0) | 2024.01.17 |