📕

[자바 객체 지향] Chapter 4. 자바가 확장한 객체 지향

작성일자
Sep 8, 2022
태그
SUB PAGE
프로젝트
자바 객체 지향
책 종류
본 게시글은 하단 책을 읽고 학습한 내용을 제 생각으로 요약, 정리한 글입니다.
목차

1. abstract 키워드(추상 메서드와 추상 클래스)

  • 추상 메서드
    • 정의: 선언부o, 구현부x
    • 특징
      • 추상 메서드 하나라도 있는 클래스 → 추상 클래스로 선언되어야함
      • 추상 클래스는 객체 만들 수 없음
      • 추상 메서드는 하위 클래스에서 반드시 구현되어야 함.(오버라이딩 필수)
    • 예시 및 필요성: 하위 클래스에선 의미가 있지만 상위 클래스에선 의미가 없는 메서드 && 상속 관계로 인해 상위 클래스에서 없어선 안되는 메서드 → 추상 메서드로 나타내면 됨.
      • Driver.java
        고양이.java
        동물.java (잘못된 버전)
        • Driver.java에서 동물 클래스 타입의 참조 변수를 통해, 고양이 클래스의 객체가 가진 울어보세요() 메서드를 호출하고 있으므로 동물 클래스의 울어보세요() 메서드는 반드시 존재해야 함.
        • 동물 객체의 울어보세요() 메서드는 선언만 있고 몸체는 없는 형태여야함 → 추상 메서드
        동물.java (추상 메서드로 수정한 버전)
        • 추상 클래스는 객체를 만들 수 없어서 동물 타입으로 객체 만들려 하면 오류 뜸.
        • 동물 객체가 어떻게 울지 걱정 안 해도 됨.
         

2. 생성자

  • 객체 생성자 메서드(생성자)
    • 정의: 객체를 생성하는 메서드
    • 형태: 클래스명()
    • 특징
      • 반환값이 없고 클래스명과 같은 이름을 가짐
      • 개발자가 만들지 않아도, 인자 없는 기본 생성자가 자동으로 만들어짐
      • 인자가 있는 생성자를 하나라도 만든다면, 기본 생성자가 자동으로 만들어지진 않음
    • 예시

3. 클래스 생성 시의 실행 블록, static 블록

  • static 블록
    • 정의: 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록(클래스 생성자 대신)
    • 특징
      • 클래스가 제일 처음 사용될 때 클래스 정보가 T메모리의 스태틱 영역에 로딩되며, 단 한 번 해당 클래스의 static 블록이 실행됨
        • 클래스가 제일 처음 사용되는 경우
            1. 클래스의 객체를 최초로 만들 때
            1. 클래스의 정적 메서드를 사용할 때
            1. 클래스의 정적 속성을 사용할 때
    • 예시

4. final 키워드

  • 클래스에 붙은 final → 상속 금지
  • 변수에 붙은 fina → 변경 불가한 상수 (다른 언어의 const와 같은 역할. 자바에서 const는 not used)
    • 정적 상수, 객체 상수: 선언 시 초기화 가능
    • 지역 상수: 선언 시 혹은 최초 한 번만 초기화 가능
  • 메서드에 붙은 final → 오버라이딩 금지

5. instanceof 키워드

  • 정의: 객체가 특정 클래스의 인스턴스인지 물어보는 연산자. 결과는 true 혹은 false임.
  • 형태: 객체참조변수 instanceof 클래스명
    • ex) 흰둥이 instanceof 강아지
  • 특징
    • 클래스의 상속 관계와 인터페이스의 구현 관계에서 쓰임
    • 객체 참조 변수의 타입이 아닌 실제 객체의 타입에 의해 처리함
      • 예시 1
        예시 2
        • 예시 1과 달리 예시 2는 조류객체의 타입이 동물이다. 허나, 실행결과엔 변함 없다.
          • 이유) 객체 참조 변수의 타입이 아닌 실제 객체의 타입에 의해 처리하기 때문

6. package 키워드

  • 정의: 네임스페이스 만들어주는 키워드
  • 네임스페이스
    • 두 개의 클래스 이름 같아 이름 충돌 발생 → 네임스페이스 나누어 클래스의 전체 이름 지정
      • ex) Customer, Customer → 마케팅사업부.Customer, 고객사업부.Customer
    • 홍길동의 스마트폰, 일지매의 스마트폰 → 소유자로 네임스페이스 나누어 두 스마트폰을 구분함. 이때, 소유자가 패키지임.

7. interface 키워드, implements 키워드

  • 인터페이스
    • 정의
    • 특징: public 추상 메서드와 public 정적 상수만 가질 수 있음
    • 예시

8. this 키워드

  • 정의: 객체가 자기 자신을 지칭하는 키워드
  • 특징
    • 원래는 지역변수와 속성변수(객체변수, 정적변수)의 이름이 같은 경우 지역 변수가 우선함
      • this 키워드를 사용하면 객체 변수를 사용할 수 있음
      • 클래스명을 접두사로 사용하면 정적 변수를 사용할 수 있음

9. super 키워드

  • 정의: 바로 위 상위 클래스의 인스턴스를 지칭하는 키워드
  • 특징
    • 상위 클래스의 인스턴스 메서드 호출 가능해짐 ex) super.method()
    • 상위의 상위 클래스의 인스턴스에는 접근 불가능함 ex) super.super.method() // 에러
    •  
[자바 객체 지향] Chapter 4. 자바가 확장한 객체 지향